Hi Matt,
On 04/19/2014 10:32 PM, Clarkson, Matt wrote:
Hi there,
We have a longstanding problem, with our app crashing on startup on
Mavericks. We work around this by setting the DYLD_LIBRARY_PATH before
launching the app from a terminal console, or using the Mac Automator
scripts to set the DYLD_LIBRARY_PATH before launching the GUI. Neither
of these should be necessary.
However, this
https://github.com/MITK/MITK/commit/ae1fc222bd3ca4c5d988c814615d2e5866eaa0e2
was recently committed, (thanks Andreas), and I thought that would fix
it. However, the app still crashes. We are currently using a branch
based on MITK 2013.09, but we are working on an update to MITK
2014.03, and the same problem exists in both, even with the above fix.
(incidentally, Andreas' fix should probably also be applied to loading
the CTK Dicom library???)
It fixes the path for the CTK Dicom library but removed the loading of
org_mitk_gui_qt_ext (which wasn't intended...).
So, I eventually found this fix:
https://github.com/NifTK/MITK/commit/f47f8bc6342b42bed61a286f1fa8dd46d6a57a36
which seemed to resolve my problem, and this patch could be relevant
to both 2013.09 and 2014.03, as the same code exists in both. So, the
app was crashing because it was taking a substring of a string that
was too short.
However, Im not sure why this piece of code exists. So, I have not yet
raised a bug. So, here’s some more detail for those that are still
reading.
This is old legacy code from pre-CTK times (when BlueBerry still
contained a C++ OSGi implementation).
Our app was working OK from the build environment, but not when double
clicked in Finder. I googled and found that when launching from finder
the working directory is typically just /. Sure enough, having done a
make package, and installing the GUI into /Applications/ I could
reproduce the problem. If I did
cd /
/Applications/niftk-14.04.0/NiftyView.app/Contents/MacOS/NiftyView
the application crashed here:
https://github.com/MITK/MITK/blob/master/BlueBerry/Bundles/org.blueberry.osgi/src/berryBundleLoader.cpp#L247
where the bundle->GetStorage() had a base directory of /, so this line:
https://github.com/MITK/MITK/blob/master/BlueBerry/Bundles/org.blueberry.osgi/src/berryBundleLoader.cpp#L223
adds “bin", and so, the app was looking through /bin for dynamic
libraries. However, in my /bin, I have several small programs like sh,
zsh, cp and so on. So, none of these are dynamic libraries, and hence
none of this have a name longer than .dylib, so the app crashes.
However when I
cd /Users/mattclarkson
/Applications/niftk-14.04.0/NiftyView.app/Contents/MacOS/NiftyView
the bundle->GetStorage() has a base directory or /Users/mattclarkson,
so the section in question is looking for dynamic libraries in
/Users/mattclarkson/bin, which does not exist, and hence this line:
https://github.com/MITK/MITK/blob/master/BlueBerry/Bundles/org.blueberry.osgi/src/berryBundleLoader.cpp#L233
returns no entries, and so this loop:
https://github.com/MITK/MITK/blob/master/BlueBerry/Bundles/org.blueberry.osgi/src/berryBundleLoader.cpp#L237
is never executed.
So my fix here:
https://github.com/NifTK/MITK/commit/f81bbf980c937530dadb01d2433f8a759c026ba3
at least avoids the simple case of processing a string that is too
short. However, I don’t understand why we are looking in those
directories at all.
Any suggestions? I believe a bug should be raised, but Im not sure
about the bigger picture.
Yes, please file a bug. Although it is legacy code, we should fix this
issue. I will try to remove the legacy parts in BlueBerry until the next
release.
Thanks for your efforts,
Sascha
------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos. Get
unparalleled scalability from the best Selenium testing platform available.
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
_______________________________________________
mitk-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mitk-users