I have successfully compiled cisTEM with wxWidgets 3.0.5, but I'm getting a segmentation fault upon initialization. Here is the stacktrace:
#0 0x00000000005b5862 in MyAlignMoviesPanel::OnUpdateUI(wxUpdateUIEvent&) (this=0x1b95850, event=...) at gui/AlignMoviesPanel.cpp:389 #1 0x00000000019fda30 in () #2 0x00000000005b5c06 in MyAlignMoviesPanel::MyAlignMoviesPanel(wxWindow*) (this=0x19fd4a0, parent=<optimized out>) at gui/AlignMoviesPanel.cpp:21 #3 0x00000000004ddeaa in MyGuiApp::OnInit() (this=<optimized out>) at programs/projectx/projectx.cpp:123 #4 0x00000000008a69cc in wxEntry(int&, wchar_t**) () #5 0x00000000004b8108 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at programs/projectx/projectx.cpp:14
Here is the configure line I have used:
LIBS='-lexpat' CPPFLAGS='-g3 -O0' ./configure \ --prefix /opt/ohpc/pub/apps/cistem-1.0.0-beta-compiled/ \ --with-fftw-dir=$FFTW_DIR \ --with-wx-config=/opt/ohpc/pub/apps/wxWidgets-3.0.5/bin/wx-config
I've compiled my own static version of wxWidgets, and I can confirm that wxWidgets works by compiling/running sample programs.
Any hints why I'm getting this segfault?
The 1.0.0-beta version is only tested with wxWidgets 3.0.2 compiled against GTK2, and this may make a difference as some important changes happened in 3.0.3. I actually thought there was a check to only allow compilation with 3.0.2, so it's good to know it let you compile with 3.0.5.
Is there a reason that you want to compile yourself? The precompiled binaries will likely be much faster, as they are compiled using the intel MKL.
I've relaxed the
configure.accondition to allow compilation with 3.0.5. I thought it would work because it is a micro version bump. I will try compiling with 3.0.2 then.
The reason I'm trying to compile is because I'm getting a lot of coredumps when running some programs, but the coredumps have no debugging information.
Unfortunately, the released version of cisTEM produces too many core dumps, in many cases it does this when there is no true error, it's just that abort() was used instead of exit() in a number of places. This is fixed in the development version, and so will be fixed in the next release.
If there are specific problems you'd like to investigate, I can send you a version compiled with debug symbols? I am also happy to help investiage them.
> This is fixed in the development version, and so will be fixed in the next release.
Good to know! I was wondering, where can I find the repository of cisTEM? I've searched the website but couldn't find any link.
> If there are specific problems you'd like to investigate, I can send you a version compiled with debug symbols? I am also happy to help investiage them.
I'm not very acquainted with EM; I'm a developer hired at CNPEM helping some researchers with these problems. So, ideally, I would like to compile from sources and maybe contribute to the software. A binary with debug information would be nice, but then I wouldn't be able to fiddle with the code :P
FYI, I've compiled WX 3.0.2 with the following configure line, but got the same segfault as before. Interestingly enough,
wx-config --versionreported as version 3.0.1; I think there's a bug in the version number of that release.
I'm debugging the program initialization, and here is a more detailed backtrace:
Notice that the line numbers might have changed compared with the original source code, because I've added some debugging lines. Nonetheless, check how the
thispointer changed from 0x18f3260 on stack frame #4 to 0x2aaaaf80c1c0 on stack frame #0. I don't know why this is happening, and I also don't know why the
MyAlignMoviesPanel::OnUpdateUImethod is being called after
Do you have any hints?
I also forgot to mention that the segfault is happening because
RunProfileComboBoxis null, and
MyAlignMoviesPanel::OnUpdateUIis trying to dereference it like so:
RunProfileComboBoxis null because the this pointer is being corrupted somehow.
Is this happening when you open cisTEM, or when you load a project?
This sounds like a memory leak somewhere else must be corrupting the pointer, RunProfileComboBox should never be NULL..