-
Notifications
You must be signed in to change notification settings - Fork 36
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Percolator: input error under win (v 1.17) (Carmen, Thermo) #15
Comments
_ the provided input.xml file works in linux but not under windows |
_last bit of code that gets executed is ssl::CGLS() (line 323), right before releasing some dynamic memory. Seems to be a memory allocation problem |
_ error occurs if input.xml if number of "featureDescription"<=9 |
_ removing empty "FragmentSpecturmScan"s in input.xml has no effect |
_ cross-debugging: minGW debugger + Wine (on Fedora): -G"Eclipse CDT4 - Unix Makefiles" flag combined with minGW toolchain generates an eclipse project with .exe binaries! |
Reached Wine through remote debugging with gdbserver (http://mingw-cross.sourceforge.net/cross_debug.html). gdbserver.exe distributed with minGW for windows. |
_ Memory allocated by in Caller::readFiles() line 489 by xercesc::XMLPlatformUtils::Initialize() was not being freed: added call to method xercesc::XMLPlatformUtils::Terminate() in destructor of Caller object! -> SOLVED 99% of memory leaks! |
SOLVED: after svn training, a check of correctness is performed by Caller::pCheck, an object of static type SanityCheck. It should purposively be instantiated according to type of file used in creating the pin file given in input to Percolator. Instead, it is always assigned an object of dynamic type SqtSanityCheck. As a consequence the following implementation of function getDefaultDirection is used which assumes an sqt file was used.
The problem is that the above instructions assume that the pin file contains at least 10 features (as any pin file generate from sqt would). If it does not, an uninitialized position of the std::vector w[set] is accessed and a memory fault might occur (it is up to the operating system to decide how to handle the basic data structure underlying a vector). The solution I implemented adds a method to the class Caller that takes care of initializing its SanityCheck field to the appropriate value; it does this through a (potentially extendible series of) if statement(s) so that an object of the most suitable dynamic type is instantiated. I decided not to do this inside the SanityCheck class because the information that is needed to decide which subclass to instantiate is available at the level of the Caller object. In case nothing more specific seems to apply, I instantiate an object of base class SanityCheck().
Resolved with commit 2b79177 EDIT: eventually moved initialization logic inside SanityCheck, commit aac5107 |
No description provided.
The text was updated successfully, but these errors were encountered: