Hi Tim, You mentioned the calculation is done using Java streams. Have you tried calling #sequential() on your stream to force it to run single threaded from the Java side?
Steve On Wed, 3 Feb 2021, 12:58 Greg Landrum, <greg.land...@gmail.com> wrote: > Given the fun that threading is, this isn't necessarily conclusive, but I > just created a small C++ multi-threading test for the morgan fingerprinting > code and everything looks fine. That remains true when the code is run > under valgrind (which is quite good at picking up the usual types of memory > corruption that cause threading issues). > > -greg > > > On Wed, Feb 3, 2021 at 1:36 PM Greg Landrum <greg.land...@gmail.com> > wrote: > >> Hi Tim, >> >> I haven't seen this particular problem myself, nor have we gotten any >> reports of crashes from the Morgan fingerprinting code. >> Comparing the fingerprinting code itself across the 2019.09 and 2020.09 >> branches I also don't see anything which is likely to cause problems, but >> one never knows. >> >> One thing that might help to know is how you construct the molecule's >> you're generating fingerprints for: are these from one of the RDKit file >> parsers? Have they been sanitized? >> >> Another thing you might have already tried, but it's worth checking >> anyway: can you force your web app to only run a single thread at a time? >> That shouldn't be a problem with the morgan fingerprinting code, but it's >> still worth the experiment. >> >> -greg >> >> >> On Tue, Feb 2, 2021 at 7:14 PM Tim Dudgeon <tdudgeon...@gmail.com> wrote: >> >>> Wondering if anyone had any thoughts on this core dump from Java. >>> What other info would be useful? >>> >>> Tim >>> >>> On Tue, Jan 12, 2021 at 12:55 PM Tim Dudgeon <tdudgeon...@gmail.com> >>> wrote: >>> >>>> I'm struggling to work out a stange core dump I'm getting when >>>> calculating Morgan fingerprints from Java. This seems to happen with the >>>> Release_2020_09 releases but not with the Release_2019_09 ones. It does not >>>> happen when calculating RDKit fingerprints. The exact Java code involved >>>> is: >>>> >>>> RDKFuncs.MorganFingerprintMol(mol, 2); >>>> >>>> More precisely this is happening when running inside a Docker container >>>> which is running the code as a Tomcat webapp, but a simple test of running >>>> that same function inside the container directly from Java (e.g. not when >>>> running in tomcat) works OK and does not core dump. >>>> Building an otherwise identical container with the Release_2019_09 code >>>> does not core dump from Tomcat. >>>> >>>> The core dump looks like this: >>>> >>>> # A fatal error has been detected by the Java Runtime Environment: >>>> # >>>> # SIGSEGV (0xb) at pc=0x00007ff9edc00518, pid=1, tid=111 >>>> # >>>> # JRE version: OpenJDK Runtime Environment (11.0.9.1+1) (build >>>> 11.0.9.1+1-post-Debian-1deb10u2) >>>> # Java VM: OpenJDK 64-Bit Server VM (11.0.9.1+1-post-Debian-1deb10u2, >>>> mixed mode, sharing, tiered, compressed oops, g1 gc, linux-amd64) >>>> # Problematic frame: >>>> # [thread 145 also had an error] >>>> [thread 149 also had an error] >>>> [thread 113 also had an error] >>>> [thread 117 also had an error] >>>> C [libGraphMolWrap.so+0xa20518] void >>>> RDKit::MorganFingerprints::calcFingerprint<RDKit::SparseIntVect<unsigned >>>> int> >(RDKit::ROMol const&, unsigned int, std::vector<unsigned int, >>>> std::allocator<unsigned int> >*, std::vector<unsigned int, >>>> std::allocator<unsigned int> > const*, bool, bool, bool, bool, >>>> std::map<unsigned int, std::vector<std::pair<unsigned int, unsigned int>, >>>> std::allocator<std::pair<unsigned int, unsigned int> > >, >>>> std::less<unsigned int>, std::allocator<std::pair<unsigned int const, >>>> std::vector<std::pair<unsigned int, unsigned int>, >>>> std::allocator<std::pair<unsigned int, unsigned int> > > > > >*, bool, >>>> RDKit::SparseIntVect<unsigned int>&)+0x148 >>>> >>>> It's difficult to know what's wrong, but thought it might be worth >>>> asking if anything in the Morgan fingerprint code has changed over that >>>> timeframe? >>>> It might be related to threading as the fingerprint generation is being >>>> done inside Java streams. >>>> >>>> Tim >>>> >>>> >>>> >>>> _______________________________________________ >>> Rdkit-discuss mailing list >>> Rdkit-discuss@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/rdkit-discuss >>> >> _______________________________________________ > Rdkit-discuss mailing list > Rdkit-discuss@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/rdkit-discuss >
_______________________________________________ Rdkit-discuss mailing list Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss