<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7654.12">
<TITLE>Null pointer crash</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->

<P><SPAN LANG="en-ca"><FONT SIZE=2 FACE="Arial">Hi all,</FONT></SPAN>
</P>

<P><SPAN LANG="en-ca"><FONT SIZE=2 FACE="Arial">We have been using Ipopt with good success to optimize various black-box process models, so thanks to all who have contributed to the project.&nbsp; However&#8230;</FONT></SPAN></P>

<P><SPAN LANG="en-ca"><FONT SIZE=2 FACE="Arial">Recently I have been running into an increasing number of crashes in IpoptCalculatedQuantities::curr_d_minus_s() on a null s pointer.&nbsp; When I bump up COIN_IPOPT_CHECKLEVEL to 3, I observe SmartPtr assertions starting in IpoptCalculatedQuantities::trial_slack_x_L() because ip_data_-&gt;trial()-&gt;x() is null.&nbsp; This occurs in AcceptTrialPoint on the max_correction = correct_bound_multiplier(&#8230;) line with the following call stack:</FONT></SPAN></P>

<P><SPAN LANG="en-ca"><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ipopt.dll!_wassert(const wchar_t * expr=0x0f594ea4, const wchar_t * filename=0x0f594e40, unsigned int lineno=433)&nbsp; Line 384&nbsp;&nbsp;&nbsp;&nbsp; C</FONT></SPAN></P>

<P><SPAN LANG="en-ca"><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ipopt.dll!Ipopt::SmartPtr&lt;Ipopt::Vector const &gt;::operator*()&nbsp; Line 433 + 0x1c bytes&nbsp;&nbsp;&nbsp;&nbsp; C++</FONT></SPAN>

<BR><SPAN LANG="en-ca"><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ipopt.dll!Ipopt::IpoptCalculatedQuantities::trial_slack_x_L()&nbsp; Line 357 + 0x8 bytes&nbsp;&nbsp;&nbsp;&nbsp; C++</FONT></SPAN>

<BR><SPAN LANG="en-ca"><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ipopt.dll!Ipopt::IpoptCalculatedQuantities::trial_compl_x_L()&nbsp; Line 1823 + 0xc bytes&nbsp;&nbsp;&nbsp; C++</FONT></SPAN>

<BR><SPAN LANG="en-ca"><FONT SIZE=2 FACE="Arial">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ipopt.dll!Ipopt::IpoptAlgorithm::AcceptTrialPoint()&nbsp; Line 658 + 0x1d bytes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C++</FONT></SPAN>

<BR><SPAN LANG="en-ca"><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ipopt.dll!Ipopt::IpoptAlgorithm::Optimize(bool isResto=false)&nbsp; Line 367 C++</FONT></SPAN>
</P>

<P><SPAN LANG="en-ca"><FONT SIZE=2 FACE="Arial">Being new to the internals of Ipopt, under what conditions will the trial x vector be null?&nbsp; Is there anything specific I should look for in the diagnostics that might help me identify the root cause?&nbsp; Any guidance would be greatly appreciated!</FONT></SPAN></P>

<P><SPAN LANG="en-ca"><FONT SIZE=2 FACE="Arial">The case in which I am currently observing this behaviour is tiny (one variable, one inequality), but I have seen it in larger ones as well.&nbsp; I can reproduce in both Ipopt 3.6.0 and 3.8.1.</FONT></SPAN></P>

<P><SPAN LANG="en-ca"><FONT SIZE=2 FACE="Arial">Thanks in advance,</FONT></SPAN>

<BR><SPAN LANG="en-ca"><FONT SIZE=2 FACE="Arial">Kelly</FONT></SPAN><SPAN LANG="en-us"></SPAN>
</P>

This e-mail is confidential and intended only for the individual(s) to whom it is addressed. If you or your organisation is not an intended recipient of this e-mail, please notify the sender by replying and do not read or disseminate its information. Please delete all copies from your system. KBC is liable neither for the proper or complete transmission of the information contained in this communication nor for any delay in its receipt. Opinions, conclusions and other information in this message and attachments that do not relate to the official business of KBC are neither given nor endorsed by it. Even though the Webroot Virus Centre has checked this message for all known viruses, you should carry out your own virus checks before opening any attachments. Thank you for your co-operation. www.kbcat.com</BODY>
</HTML>