[MacPorts] #45309: gimp2 @2.8.14 on 10.9 - doesn't load plug-ins

MacPorts noreply at macports.org
Sun Nov 2 11:18:09 PST 2014


#45309: gimp2 @2.8.14 on 10.9 - doesn't load plug-ins
---------------------------+----------------------
  Reporter:  and.damore@…  |      Owner:  devans@…
      Type:  defect        |     Status:  assigned
  Priority:  Normal        |  Milestone:
 Component:  ports         |    Version:
Resolution:                |   Keywords:
      Port:  gimp2         |
---------------------------+----------------------

Comment (by jeremyhu@…):

 Replying to [comment:39 macports@…]:
 > FTR, on 10.9 I'm also seeming only the same four pthread_atfork() calls
 as dtakahashi added at comment:38
 ([https://trac.macports.org/attachment/ticket/45309/gimp-lldb-transcript-
 pthread_atfork.txt gimp-lldb-transcript-pthread_atfork.txt]), although I'm
 getting somewhat fewer symbols resolved in lldb in the "bt".  Anyway the
 four calls seem to be:
 >
 > 0.  ImageLoaderMachO::doImageInit()
 > 0.  ImageLoaderMachO::doModInitFunctions()
 > 0.  getpwuid()
 > 0.  getpwuid()
 >
 > The first two seem to be tied up with loading the MachO
 (executable/libraries) images into memory, and the last two seem to be
 deep in the callpath of getpwuid().  All of which seem to be inside the OS
 libraries, rather than inside GIMP/GTK/glib.  So I suspect it's unlikely
 they've changed recently to cause this to suddenly break like this.

 Your analysis is a tad off here.

 The first one is  part of the initialization of CoreFoundation.
 The last two happen *AFTER* the fork and are thus not relevant.
 The second one is surely the culprit:

 {{{
 (lldb) bt
 49      * thread #1: tid = 0x39e8, 0x00007fff92e420ff
 libsystem_c.dylib`pthread_atfork, queue = 'com.apple.main-thread, stop
 reason = breakpoint 1.1
 50          frame #0: 0x00007fff92e420ff libsystem_c.dylib`pthread_atfork
 51          frame #1: 0x00007fff92e3bfc0 libsystem_c.dylib`pthread_once +
 87
 52          frame #2: 0x00007fff5fc13378
 dyld`ImageLoaderMachO::doModInitFunctions(ImageLoader::LinkContext const&)
 + 236
 53          frame #3: 0x00007fff5fc13762
 dyld`ImageLoaderMachO::doInitialization(ImageLoader::LinkContext const&) +
 46
 54          frame #4: 0x00007fff5fc1006e
 dyld`ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&,
 unsigned int, ImageLoader::InitializerTimingList&) + 380
 55          frame #5: 0x00007fff5fc0ffc4
 dyld`ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&,
 unsigned int, ImageLoader::InitializerTimingList&) + 210
 56          frame #6: 0x00007fff5fc0ffc4
 dyld`ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&,
 unsigned int, ImageLoader::InitializerTimingList&) + 210
 57          frame #7: 0x00007fff5fc0ffc4
 dyld`ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&,
 unsigned int, ImageLoader::InitializerTimingList&) + 210
 58          frame #8: 0x00007fff5fc0ffc4
 dyld`ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&,
 unsigned int, ImageLoader::InitializerTimingList&) + 210
 59          frame #9: 0x00007fff5fc0ffc4
 dyld`ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&,
 unsigned int, ImageLoader::InitializerTimingList&) + 210
 60          frame #10: 0x00007fff5fc0ffc4
 dyld`ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&,
 unsigned int, ImageLoader::InitializerTimingList&) + 210
 61          frame #11: 0x00007fff5fc0feba
 dyld`ImageLoader::runInitializers(ImageLoader::LinkContext const&,
 ImageLoader::InitializerTimingList&) + 54
 62          frame #12: 0x00007fff5fc04e38
 dyld`dyld::runInitializers(ImageLoader*) + 89
 63          frame #13: 0x00007fff5fc0a87c dyld`dlopen + 581
 64          frame #14: 0x00007fff952cfdd8 libdyld.dylib`dlopen + 57
 65          frame #15: 0x000000010124b319
 libgmodule-2.0.0.dylib`g_module_open + 1382
 66          frame #16: 0x00000001011fc6ca
 libgegl-0.2.0.dylib`gegl_module_open + 20
 67          frame #17: 0x00000001011fc2c6
 libgegl-0.2.0.dylib`gegl_module_load + 84
 68          frame #18: 0x00000001011fc231
 libgegl-0.2.0.dylib`gegl_module_new + 152
 69          frame #19: 0x00000001011fcf57
 libgegl-0.2.0.dylib`gegl_module_db_module_initialize + 157
 70          frame #20: 0x00000001011fbf5f
 libgegl-0.2.0.dylib`gegl_datafiles_read_directories + 653
 71          frame #21: 0x00000001011df7c3
 libgegl-0.2.0.dylib`gegl_post_parse_hook + 587
 72          frame #22: 0x000000010149166e
 libglib-2.0.0.dylib`g_option_context_parse + 2092
 73          frame #23: 0x0000000101492076
 libglib-2.0.0.dylib`g_option_context_parse_strv + 52
 74          frame #24: 0x000000010000fde8 gimp`main + 529
 75          frame #25: 0x00007fff952d07e1 libdyld.dylib`start + 1
 }}}

 It is being called by one of the initializers due to the dlopen().

 I suspect that something later dlclose()d that library leaving us with a
 dead pointer.

 Perhaps you can break on dlclose() after that pthread_atfork to see if my
 hunch is correct.

-- 
Ticket URL: <https://trac.macports.org/ticket/45309#comment:45>
MacPorts <https://www.macports.org/>
Ports system for OS X


More information about the macports-tickets mailing list