<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">Cornelius,<br>
      <br>
      static variables were used just because that was the way a main
      program became callable.&nbsp; Some work was started a few years ago to
      improve - I will have another look to see what minimum work needs
      to be done to make CbcMain0/1 calls threadsafe.<br>
      <br>
      John Forrest<br>
      <br>
      On 17/12/13 15:11, Cornelius Riemenschneider wrote:<br>
    </div>
    <blockquote
      cite="mid:zarafa.52b069bf.5929.0d62c3f875d21fca@noriswww"
      type="cite">
      <meta http-equiv="Context-Type" content="text/html;
        charset=iso-8859-1">
      <meta name="Generator" content="Microsoft Word 12 (filtered
        medium)">
      <div class="WordSection1">
        <p class="MsoNormal">Hello,</p>
        <p class="MsoNormal">we use CBC via googles or-tools from java
          in our application.</p>
        <p class="MsoNormal">Compared to scientific problems, our
          problems are small and solved by Cbc in &lt;1s (which is
          great!).</p>
        <p class="MsoNormal">As we process requests from users
          concurrently, we&#8217;d also like to call Cbc concurrently.</p>
        <p class="MsoNormal">Currently, this is impossible, because Cbc
          uses the static parameters array in CbcMain0 and CbcMain1 and
          thus crashes or reads incorrect parameters.</p>
        <p class="MsoNormal">One backtrace, for example is:</p>
        <p class="MsoNormal">&nbsp;</p>
        <p class="MsoNormal">#2 0x00007fb3435bf52b in __libc_message
          (do_abort=&lt;optimized out&gt;, fmt=&lt;optimized out&gt;) at
          ../sysdeps/unix/sysv/linux/libc_fatal.c:189<br>
          #3 0x00007fb3435c8d76 in malloc_printerr (action=3,
          str=0x7fb3436a1248 "double free or corruption (!prev)",
          ptr=&lt;optimized out&gt;) at malloc.c:6283<br>
          #4 0x00007fb3435cdaac in *__GI___libc_free (mem=&lt;optimized
          out&gt;) at malloc.c:3738<br>
          #5 0x00007fb342733f06 in std::string::assign(std::string
          const&amp;) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6<br>
          #6 0x00007fb2d652cb7b in establishParams(int&amp;,
          CbcOrClpParam*) () from libjnilinearsolver.so<br>
          #7 0x00007fb2d64edc3b in CbcMain0(CbcModel&amp;) () from
          libjnilinearsolver.so<br>
          #8 0x00007fb2d6511bec in callCbc(char const*, CbcModel&amp;)
          () from libjnilinearsolver.so<br>
          #9 0x00007fb2d64e3fce in
          operations_research::CBCInterface::Solve(operations_research::MPSolverParameters
          const&amp;) () from libjnilinearsolver.so<br>
          #10 0x00007fb2d64cfe45 in
          operations_research::MPSolver::Solve(operations_research::MPSolverParameters
          const&amp;) () from libjnilinearsolver.so<br>
          #11 0x00007fb2d64cff3b in
          operations_research::MPSolver::Solve() () from
          libjnilinearsolver.so<br>
          #12 0x00007fb2d64c91cf in
          Java_com_google_ortools_linearsolver_mainJNI_MPSolver_1solve_1_1SWIG_10
          () from libjnilinearsolver.so</p>
        <p class="MsoNormal"># from here on it&#8217;s just the JVM</p>
        <p class="MsoNormal">&nbsp;</p>
        <p class="MsoNormal">As I don&#8217;t know the code and it&#8217;s hard to
          read, I can&#8217;t really fix the problem by myself,</p>
        <p class="MsoNormal">but wouldn&#8217;t it be better to move
          parameters inside CbcModel instead of having a static array
          laying around?</p>
        <p class="MsoNormal">&nbsp;</p>
        <p class="MsoNormal">Andi f that&#8217;s done (or another solution is
          found), do you know of any thread-safety issues in cbc?</p>
        <p class="MsoNormal">Keep in mind, we don&#8217;t want Cbc to solve
          our problem in multiple threads, we just want to be able to
          solve different problems simultaneous.</p>
        <p class="MsoNormal">&nbsp;</p>
        <p class="MsoNormal">Regards,</p>
        <p class="MsoNormal"><span>Cornelius Riemenschneider</span></p>
        <p class="MsoNormal"><span>--</span></p>
        <p class="MsoNormal"><span>ITscope GmbH</span></p>
        <p class="MsoNormal"><span>Ludwig-Erhard-Allee 20</span></p>
        <p class="MsoNormal"><span>76131 Karlsruhe</span></p>
        <p class="MsoNormal"><span>Email: <a moz-do-not-send="true"
              href="mailto:cornelius.riemenschneider@itscope.de">cornelius.riemenschneider@itscope.de</a></span></p>
        <p class="MsoNormal"><span><a moz-do-not-send="true"
              href="https://www.itscope.com">https://www.itscope.com</a></span></p>
        <p class="MsoNormal"><span>Handelsregister: AG Mannheim, HRB
            232782</span></p>
        <p class="MsoNormal"><span>Sitz der Gesellschaft: Karlsruhe</span></p>
        <p class="MsoNormal"><span>Gesch&auml;ftsf&uuml;hrer: Alexander M&uuml;nkel,
            Benjamin Mund, Stefan Reger</span></p>
        <p class="MsoNormal">&nbsp;</p>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Cbc mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Cbc@list.coin-or.org">Cbc@list.coin-or.org</a>
<a class="moz-txt-link-freetext" href="http://list.coin-or.org/mailman/listinfo/cbc">http://list.coin-or.org/mailman/listinfo/cbc</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>