Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>I finally managed to figure this out! Here's how:</p> <p>In gdb, I printed all the shared libraries in memory with <code>info shared</code>. I copied this to a text file <code>shared.txt</code> and extracted the library names with:</p> <pre><code>cat shared.txt | grep -v \*|grep -v quit---|grep -v Syms\ Read|grep -v \(gdb\)|awk '{print $4}'&gt;libs </code></pre> <p>From there, I checked the symbols in each library with:</p> <pre><code>for i in `cat libs|xargs`;do nm --demangle $i|grep checkPopulation; if [ $? -eq 0 ]; then echo \($i\); fi;done </code></pre> <p>Which prints all symbols containing "checkPopulation" followed by the name of the library that contains each. My output:</p> <pre><code>000adb18 T GlobalSearch::QueueManager::checkPopulation() 000adb8a T GlobalSearch::QueueManager::checkPopulation_() (/usr/lib/avogadro/1_1/contrib/randomdock.so) 000db682 T GlobalSearch::QueueManager::checkPopulation() (/usr/lib/avogadro/1_1/contrib/xtalopt.so) </code></pre> <p>So this "phantom" <code>checkPopulation_</code> symbol is coming from randomdock.so, which was built a long time ago against an older version of the static <code>libglobalsearch.a</code>, which contains the now removed <code>GlobalSearch::QueueManager::checkPopulation_()</code>. Removing randomdock.so causes everything to behave as it should.</p> <p>Thanks for all the suggestions -- I certainly learned a few new gdb tricks while tracking this down. There's also a lesson here about breaking API, too ;-)</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload