<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. 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 <1s (which is
great!).</p>
<p class="MsoNormal">As we process requests from users
concurrently, we’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"> </p>
<p class="MsoNormal">#2 0x00007fb3435bf52b in __libc_message
(do_abort=<optimized out>, fmt=<optimized out>) 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=<optimized out>) at malloc.c:6283<br>
#4 0x00007fb3435cdaac in *__GI___libc_free (mem=<optimized
out>) at malloc.c:3738<br>
#5 0x00007fb342733f06 in std::string::assign(std::string
const&) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6<br>
#6 0x00007fb2d652cb7b in establishParams(int&,
CbcOrClpParam*) () from libjnilinearsolver.so<br>
#7 0x00007fb2d64edc3b in CbcMain0(CbcModel&) () from
libjnilinearsolver.so<br>
#8 0x00007fb2d6511bec in callCbc(char const*, CbcModel&)
() from libjnilinearsolver.so<br>
#9 0x00007fb2d64e3fce in
operations_research::CBCInterface::Solve(operations_research::MPSolverParameters
const&) () from libjnilinearsolver.so<br>
#10 0x00007fb2d64cfe45 in
operations_research::MPSolver::Solve(operations_research::MPSolverParameters
const&) () 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’s just the JVM</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">As I don’t know the code and it’s hard to
read, I can’t really fix the problem by myself,</p>
<p class="MsoNormal">but wouldn’t it be better to move
parameters inside CbcModel instead of having a static array
laying around?</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Andi f that’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’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"> </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äftsführer: Alexander Münkel,
Benjamin Mund, Stefan Reger</span></p>
<p class="MsoNormal"> </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>