<br><font size=2 face="sans-serif">That one is OK. There used to
be a define of ZEROFAULT if -g but it seems to have vanished.</font>
<br>
<br><font size=2 face="sans-serif">Just define ZEROFAULT and Purify should
be happy.</font>
<br>
<br><font size=2 face="sans-serif">John</font>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>"Matthew Galati"
<Matthew.Galati@sas.com></b> </font>
<br><font size=1 face="sans-serif">Sent by: coin-discuss-bounces@list.coin-or.org</font>
<p><font size=1 face="sans-serif">05/24/2006 03:32 AM</font>
<table border>
<tr valign=top>
<td bgcolor=white>
<div align=center><font size=1 face="sans-serif">Please respond to<br>
Discussions about open source software for Operations Research
<coin-discuss@list.coin-or.org></font></div></table>
<br>
<td width=59%>
<table width=100%>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">To</font></div>
<td><font size=1 face="sans-serif">"Discussions about open source
software for Operations Research" <coin-discuss@list.coin-or.org></font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">Subject</font></div>
<td><font size=1 face="sans-serif">[Coin-discuss] Purify UMR CoinFactorization::pivotOneOtherRow</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br>
<br><tt><font size=2>I recall CLP ignoring some UMR's in past postings.
This one comes up a lot - is it safe?<br>
<br>
Matt<br>
<br>
<br>
<br>
[I] Starting Purify'd C:\cygwin\home\magala\sasopt\cbuild\exemilpNET03\exemilp\Debug\exemilp.exe
at 05/23/2006 21:27:41<br>
[I] Starting main<br>
[W] UMR: Uninitialized memory read in CoinFactorization::pivotOneOtherRow(int,int)
{47 occurrences}<br>
Reading 4 bytes from 0x038fda50 (4 bytes at
0x038fda50 uninitialized)<br>
Address 0x038fda50 is 11000 bytes into a 234016
byte block at 0x038faf58<br>
Address 0x038fda50 points to a C++ new block
in heap 0x00390000<br>
Thread ID: 0xb4c<br>
Error location<br>
CoinFactorization::pivotOneOtherRow(int,int)
[c:\cygwin\home\magala\coin\coin\coinfactorization1.cpp:1949]<br>
if ( i + 1 < endColumn ) {<br>
#endif<br>
nextIRow = indexRowU_[i + 1];<br>
=>
nextValue = elementU_[i + 1];<br>
#ifdef ZEROFAULT<br>
}<br>
#endif<br>
CoinFactorization::factorSparse(void)
[c:\cygwin\home\magala\coin\coin\coinfactorization2.cpp:322]<br>
break;<br>
}<br>
} else {<br>
=>
if ( !pivotOneOtherRow ( pivotRow, pivotColumn ) )
{<br>
status = -99;<br>
count=biggerDimension_+1;<br>
break;<br>
CoinFactorization::factor(void)
[c:\cygwin\home\magala\coin\coin\coinfactorization1.cpp:980]<br>
CoinFactorization::factor
( )<br>
{<br>
//sparse<br>
=> status_ = factorSparse
( );<br>
switch (
status_ ) {<br>
case 0:
//finished<br>
totalElements_
= 0;<br>
ClpFactorization::factorize(ClpSimplex
*,int,bool) [c:\cygwin\home\magala\coin\clp\clpfactorization.cpp:361]<br>
preProcess ( 2 );<br>
else<br>
preProcess ( 3 ); // no row copy<br>
=> factor (
);<br>
if
(status_==-99) {<br>
// get more memory<br>
areaFactor(2.0*areaFactor());<br>
ClpSimplex::internalFactorize(int)
[c:\cygwin\home\magala\coin\clp\clpsimplex.cpp:1395]<br>
exit(0);<br>
k++;<br>
}<br>
=> int status = factorization_->factorize(this,
solveType,valuesPass);<br>
if (status)
{<br>
handler_->message(CLP_SIMPLEX_BADFACTOR,messages_)<br>
<<status<br>
ClpSimplexDual::statusOfProblemInDual(int&,int,double
*,ClpDataSave&,int) [c:\cygwin\home\magala\coin\clp\clpsimplexdual.cpp:3292]<br>
dualRowPivot_->saveWeights(this,1);<br>
if
(type) {<br>
// is factorization okay?<br>
=> if
(internalFactorize(1)) {<br>
//
no - restore previous basis<br>
unflagVariables
= false;<br>
assert
(type==1);<br>
ClpSimplexDual::gutsOfDual(int,double
*&,int,ClpDataSave&) [c:\cygwin\home\magala\coin\clp\clpsimplexdual.cpp:388]<br>
}<br>
//
may factorize, checks if problem finished<br>
statusOfProblemInDual(lastCleaned,factorType,saveDuals,data,<br>
=>
ifValuesPass);<br>
//
If values pass then do easy ones on first time<br>
if
(ifValuesPass&&<br>
progress_->lastIterationNumber(0)<0&&saveDuals)
{<br>
ClpSimplexDual::dual(int,int)
[c:\cygwin\home\magala\coin\clp\clpsimplexdual.cpp:452]<br>
int initialStatus=problemStatus_;<br>
<br>
if (!returnCode)<br>
=> gutsOfDual(ifValuesPass,saveDuals,initialStatus,data);<br>
if (problemStatus_==10)<br>
startFinishOptions
|= 1;<br>
finishSolve(startFinishOptions);<br>
ClpSimplex::dual(int,int) [c:\cygwin\home\magala\coin\clp\clpsimplex.cpp:4408]<br>
<br>
As far as I can see this is perfectly safe.<br>
*/<br>
=> int returnCode
= ((ClpSimplexDual *) this)->dual(ifValuesPass, startFinishOptions);<br>
if ((specialOptions_&2048)!=0&&problemStatus_==10&&!numberPrimalInfeasibilities_<br>
&&sumDualInfeasibilities_<1000.0*dualTolerance_&&perturbation_>=100)<br>
problemStatus_=0;
// ignore<br>
OsiClpSolverInterface::resolve(void)
[c:\cygwin\home\magala\coin\osi\osiclp\osiclpsolverinterface.cpp:475]<br>
}<br>
} else {<br>
if((specialOptions_&1)==0) {<br>
=>
modelPtr_->dual(0,startFinishOptions);<br>
} else {<br>
crunch();<br>
}<br>
Allocation location<br>
new(UINT) [f:\vs70builds\3077\vc\crtbld\crt\src\newop.cpp:10]<br>
<>=(UINT)
[f:\vs70builds\3077\vc\crtbld\crt\src\newaop.cpp:7]<br>
CoinFactorization::getAreas(int,int,int,int)
[c:\cygwin\home\magala\coin\coin\coinfactorization1.cpp:616]<br>
lengthAreaU_
= (CoinBigIndex) (areaFactor_*lengthAreaU_);<br>
lengthAreaL_
= (CoinBigIndex) (areaFactor_*lengthAreaL_);<br>
}<br>
=> elementU_ = new
double [ lengthAreaU_ ];<br>
indexRowU_
= new int [ lengthAreaU_ ];<br>
indexColumnU_
= new int [ lengthAreaU_ ];<br>
elementL_
= new double [ lengthAreaL_ ];<br>
ClpFactorization::factorize(ClpSimplex
*,int,bool) [c:\cygwin\home\magala\coin\clp\clpfactorization.cpp:315]<br>
#else<br>
getAreas
( numberRows,<br>
numberRowBasic+numberColumnBasic, numberElements,<br>
=>
2 * numberElements );<br>
#endif<br>
//fill<br>
//
Fill in counts so we can skip part of preProcess<br>
ClpSimplex::internalFactorize(int)
[c:\cygwin\home\magala\coin\clp\clpsimplex.cpp:1395]<br>
exit(0);<br>
k++;<br>
}<br>
=> int status = factorization_->factorize(this,
solveType,valuesPass);<br>
if (status)
{<br>
handler_->message(CLP_SIMPLEX_BADFACTOR,messages_)<br>
<<status<br>
ClpSimplexDual::statusOfProblemInDual(int&,int,double
*,ClpDataSave&,int) [c:\cygwin\home\magala\coin\clp\clpsimplexdual.cpp:3292]<br>
dualRowPivot_->saveWeights(this,1);<br>
if
(type) {<br>
// is factorization okay?<br>
=> if
(internalFactorize(1)) {<br>
//
no - restore previous basis<br>
unflagVariables
= false;<br>
assert
(type==1);<br>
ClpSimplexDual::gutsOfDual(int,double
*&,int,ClpDataSave&) [c:\cygwin\home\magala\coin\clp\clpsimplexdual.cpp:388]<br>
}<br>
//
may factorize, checks if problem finished<br>
statusOfProblemInDual(lastCleaned,factorType,saveDuals,data,<br>
=>
ifValuesPass);<br>
//
If values pass then do easy ones on first time<br>
if
(ifValuesPass&&<br>
progress_->lastIterationNumber(0)<0&&saveDuals)
{<br>
ClpSimplexDual::dual(int,int)
[c:\cygwin\home\magala\coin\clp\clpsimplexdual.cpp:452]<br>
int initialStatus=problemStatus_;<br>
<br>
if (!returnCode)<br>
=> gutsOfDual(ifValuesPass,saveDuals,initialStatus,data);<br>
if (problemStatus_==10)<br>
startFinishOptions
|= 1;<br>
finishSolve(startFinishOptions);<br>
ClpSimplex::dual(int,int) [c:\cygwin\home\magala\coin\clp\clpsimplex.cpp:4408]<br>
<br>
As far as I can see this is perfectly safe.<br>
*/<br>
=> int returnCode
= ((ClpSimplexDual *) this)->dual(ifValuesPass, startFinishOptions);<br>
if ((specialOptions_&2048)!=0&&problemStatus_==10&&!numberPrimalInfeasibilities_<br>
&&sumDualInfeasibilities_<1000.0*dualTolerance_&&perturbation_>=100)<br>
problemStatus_=0;
// ignore<br>
OsiClpSolverInterface::resolve(void)
[c:\cygwin\home\magala\coin\osi\osiclp\osiclpsolverinterface.cpp:475]<br>
}<br>
} else {<br>
if((specialOptions_&1)==0) {<br>
=>
modelPtr_->dual(0,startFinishOptions);<br>
} else {<br>
crunch();<br>
}<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
Coin-discuss mailing list<br>
Coin-discuss@list.coin-or.org<br>
http://list.coin-or.org/mailman/listinfo/coin-discuss<br>
</font></tt>
<br>