Subject: Re: bug#1079: GNUstep port segfaults making autoloads on x86_64

From: Glenn Morris <[email-masked]>
Date: Mon, 06 Oct 2008 13:24:02 -0400

Yavor Doganov wrote:

> Maybe that's the culprit; -[NSString propertyList] is called,
> resulting in NSException, because the .plist file is not a valid
> dictionary (at least according to the plparse tool).
>
> Does the naive patch below eliminate this problem?

I'm afraid not.

Here is a full backtrace this time:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 47627448176928 (LWP 29014)]
0x00002b5120466af6 in NSCountFrames () at NSDebug.m:994
994     NSDebug.m: No such file or directory.
        in NSDebug.m
Current language:  auto; currently objective-c
(gdb) bt full 
#0  0x00002b5120466af6 in NSCountFrames () at NSDebug.m:994
        env = (jbuf_type *) 0x1b41bde0
#1  0x00002b512046eff3 in GSPrivateStackAddresses () at NSDebug.m:1100
        n = 0
        stack = (class NSMutableArray *) 0x2b5120994020
        pool = (class NSAutoreleasePool *) 0x7fff8afb7100
        i = 11089
        env = (jbuf_type *) 0x8
#2  0x00002b5120485920 in -[NSException raise] (self=0x1b40b460, 
    _cmd=0x2b5120930440) at NSException.m:822
        __value = (struct objc_object *) 0x1b40b460
        __object = (struct objc_object *) 0x7fff8afb71a0
        thread = (TInfo) 0x1b40b740
        handler = (NSHandler *) 0x2b512092faa0
        recursion = 0
#3  0x00002b51204853f4 in +[NSException raise:format:arguments:] (
    self=0x2b512092ffe0, _cmd=0x2b5120930410, name=0x2b512092faa0, 
    format=0x2b512095f020, argList=0x7fff8afb71e0) at NSException.m:765
        reason = (class NSString *) 0x1b40b740
        except = (class NSException *) 0x1b40b460
#4  0x00002b512048532a in +[NSException raise:format:] (self=0x2b512092ffe0, 
    _cmd=0x2b51209606b0, name=0x2b512092faa0, format=0x2b512095f020)
    at NSException.m:751
        args =   {{
    gp_offset = 32, 
    fp_offset = 48, 
    overflow_arg_area = 0x7fff8afb72d0, 
    reg_save_area = 0x7fff8afb7200
  }}
---Type <return> to continue, or q <return> to quit---
#5  0x00002b51204f9fbb in GSPropertyListFromStringsFormat (string=0x1b392730)
    at NSPropertyList.m:1505
        dict = (class NSMutableDictionary *) 0x0
        _pld = {
  ptr = 0x1b281c70 "(setq foo 1)", 
  end = 12, 
  pos = 0, 
  lin = 0, 
  err = 0x2b512095f000, 
  opt = NSPropertyListImmutable, 
  key = 0 '\000', 
  old = 1 '\001'
}
        pld = (pldata *) 0x7fff8afb72f0
        d = (class NSData *) 0x1b4082e0
        __PRETTY_FUNCTION__ =   "GSPropertyListFromStringsFormat"
#6  0x00002b5120534474 in -[NSString propertyList] (self=0x1b392730, 
    _cmd=0x2b512098ef80) at NSString.m:4701
        NSLocalHandler = {
  jumpState =     {{
      __jmpbuf =         {47627439046432,
        724778841060540000,
        457201792,
        47627433212536,
        456591952,
        0,
        724778841060538544,
        724721282700660500}, 
      __mask_was_saved = 0, 
---Type <return> to continue, or q <return> to quit---
      __saved_mask = {
        __val =           {47627433363938,
          0,
          5,
          34359738380,
          47627439234176,
          47627439124032,
          456730416,
          140735525123264,
          47627434629713,
          34816468736,
          47627439234176,
          47627439124112,
          456730416,
          51539607552,
          456730416,
          140735525123344}
      }
    }}, 
  next = 0x7fff8afb7530, 
  exception = 0x7fff8afb7510
}
        data = (class NSData *) 0x1b408340
        result = (struct objc_object *) 0x0
        format = NSPropertyListOpenStepFormat
        error = (class NSString *) 0x1b40b4a0
#7  0x00002b51205675f3 in -[NSUserDefaults __createArgumentDictionary] (
    self=0x1b3e85b0, _cmd=0x2b512098ebf0) at NSUserDefaults.m:1816
        NSLocalHandler = {
---Type <return> to continue, or q <return> to quit---
  jumpState =     {{
      __jmpbuf =         {456730416,
        724778841060539664,
        457201792,
        47627433212536,
        456591952,
        0,
        724778841060539984,
        724721282700869303}, 
      __mask_was_saved = 0, 
      __saved_mask = {
        __val =           {0,
          457203264,
          10,
          140735525123504,
          47627433208785,
          240,
          47627439259680,
          140735525123584,
          47627433208551,
          43406905520,
          457201800,
          5,
          455558080,
          8,
          457203264,
          18446744073709551615}
      }
    }}, 
---Type <return> to continue, or q <return> to quit---
  next = 0x0, 
  exception = 0x7fff8afb7630
}
        plist_val = (class NSObject *) 0xa2098e900
        old = (class NSString *) 0x0
        args = (class NSArray *) 0x1b3954b0
        enumerator = (class NSEnumerator *) 0x1b40a690
        argDict = (class NSMutableDictionary *) 0x1b404f10
        done = 0 '\000'
        key = (struct objc_object *) 0x1b40b3e0
        val = (struct objc_object *) 0x1b392730
#8  0x00002b5120562e0e in -[NSUserDefaults initWithContentsOfFile:] (
    self=0x1b3e85b0, _cmd=0x2b512098eae0, path=0x1b3e97c0)
    at NSUserDefaults.m:872
        mgr = (class NSFileManager *) 0x1b3aa130
        r = {
  location = 2147483647, 
  length = 0
}
        loadReadonly = 0 '\000'
        flag = 1 '\001'
        objc_super = {
  self = 0x1b3e85b0, 
  super_class = 0x2b5120950860
}
#9  0x00002b5120562349 in -[NSUserDefaults initWithUser:] (self=0x1b3e85b0, 
    _cmd=0x2b512098ead0, userName=0x1b290330) at NSUserDefaults.m:774
        path = (class NSString *) 0x1b3e96a0
#10 0x00002b51205622c4 in -[NSUserDefaults init] (self=0x1b3e85b0, 
---Type <return> to continue, or q <return> to quit---
    _cmd=0x2b512098e910) at NSUserDefaults.m:765
No locals.
#11 0x00002b5120561383 in +[NSUserDefaults standardUserDefaults] (
    self=0x2b512098e6c0, _cmd=0x2b512098e870) at NSUserDefaults.m:474
        added_lang = 0 '\000'
        added_locale = 0 '\000'
        lang = (struct objc_object *) 0x500000000
        uL = (class NSArray *) 0x7fff8afb7840
        enumerator = (class NSEnumerator *) 0x2b51203bdee7
#12 0x00002b5120561c78 in +[NSUserDefaults userLanguages] (
    self=0x2b512098e6c0, _cmd=0x2b51209109f0) at NSUserDefaults.m:682
        currLang = (class NSArray *) 0x0
        locale = (class NSString *) 0x0
        result = (class NSArray *) 0x2b5120bff708
#13 0x00002b5120420b99 in +[NSBundle _bundleResourcePathsWithRootPath:subPath:]
    (self=0x2b5120910360, _cmd=0x2b5120910a00, rootPath=0x1b3d5160, 
    subPath=0x0) at NSBundle.m:1603
        primary = (class NSString *) 0x2b512090de90
        language = (class NSString *) 0x1b375920
        languages = (class NSArray *) 0x2b512057036f
        array = (class NSMutableArray *) 0x1b3ded80
        enumerate = (class NSEnumerator *) 0x2b5120910360
#14 0x00002b5120420e05 in +[NSBundle pathForResource:ofType:inRootPath:inDirectory:withVersion:] (self=0x2b5120910360, _cmd=0x2b5120910a10, 
    name=0x2b512090f760, ext=0x2b512090f780, rootPath=0x1b3d5160, subPath=0x0, 
    version=0) at NSBundle.m:1637
        path = (class NSString *) 0x0
        fullpath = (class NSString *) 0x2b5120950860
        pathlist = (class NSEnumerator *) 0x7fff8afb79b0
---Type <return> to continue, or q <return> to quit---
#15 0x00002b512042131f in -[NSBundle pathForResource:ofType:inDirectory:] (
    self=0x1b3dd610, _cmd=0x2b5120910770, name=0x2b512090f760, 
    ext=0x2b512090f780, subPath=0x0) at NSBundle.m:1732
        rootPath = (class NSString *) 0x1b3d5160
#16 0x00002b51204211e4 in -[NSBundle pathForResource:ofType:] (
    self=0x1b3dd610, _cmd=0x2b5120910b10, name=0x2b512090f760, 
    ext=0x2b512090f780) at NSBundle.m:1713
No locals.
#17 0x00002b51204230f5 in -[NSBundle infoDictionary] (self=0x1b3dd610, 
    _cmd=0x2b5120910990) at NSBundle.m:2192
        path = (class NSString *) 0x7fff8afb7ad0
#18 0x00002b51204233d5 in -[NSBundle bundleIdentifier] (self=0x1b3dd610, 
    _cmd=0x2b51209108f0) at NSBundle.m:2237
No locals.
#19 0x00002b512041f8b3 in -[NSBundle initWithPath:] (self=0x1b3dd610, 
    _cmd=0x2b5120910750, path=0x1b3d5160) at NSBundle.m:1315
        identifier = (class NSString *) 0x2b5120910750
        objc_super = {
  self = 0x1b3dd610, 
  super_class = 0x2b5120950860
}
#20 0x00002b512041f2a0 in +[NSBundle bundleWithPath:] (self=0x2b5120910360, 
    _cmd=0x2b5120910bc0, path=0x1b3dd430) at NSBundle.m:1192
No locals.
#21 0x00002b5120423980 in +[NSBundle(GNUstep) bundleForLibrary:version:] (
    self=0x2b5120910360, _cmd=0x2b5120910820, libraryName=0x1b397380, 
    interfaceVersion=0x2b512090f080) at NSBundle.m:2352
        b = (class NSBundle *) 0x2b51209f6315
        isDir = 1 '\001'
---Type <return> to continue, or q <return> to quit---
        paths = (class NSArray *) 0x1b2900e0
        enumerator = (class NSEnumerator *) 0x1b3d6ab0
        path = (class NSString *) 0x1b3dd430
        fm = (class NSFileManager *) 0x1b3aa130
#22 0x00002b512041e06a in +[NSBundle initialize] (self=0x2b5120910360, 
    _cmd=0x2b5120994ef0) at NSBundle.m:819
        env = (class NSDictionary *) 0x1b3aecb0
        str = (class NSString *) 0x1b3a6100
#23 0x00002b51209f604d in objc_msg_lookup () from /usr/lib64/libobjc.so.1
No symbol table info available.
#24 0x00000000006b8c20 in ns_init_paths () at nsterm.m:329
        bundle = (class NSBundle *) 0x7fff8afb7d80
        binDir = (class NSString *) 0x2b512041adff
        resourceDir = (class NSString *) 0x1b34fda0
        resourcePath = (class NSString *) 0x1b375920
        resourcePaths = (class NSString *) 0x7fff8afb7dc0
        range = {
  location = 456612192, 
  length = 0
}
        onWindows = 0 '\000'
        pathSeparator = (class NSString *) 0x7fff8afb7dc0
        fileManager = (class NSFileManager *) 0xb5ae90
        isDir = 0 '\000'
#25 0x000000000057a0aa in main (argc=5, argv=0x7fff8afb82e8) at emacs.c:1467
        dummy = 47627439642688
        stack_bottom_variable = 0 '\000'
        do_initial_setlocale = 0
        skip_args = 1
---Type <return> to continue, or q <return> to quit---
        rlim = {
  rlim_cur = 33554432, 
  rlim_max = 18446744073709551615
}
        no_loadup = 0
        junk = 0x0