It seems we've got a genuine heisenbug-class problem here.  This is what I
tried now:

  - When compiled without DEBUG=1, it doesn't segfault (at least, not when I
    tried!!)

  - Back to the DEBUG=1 build, I tried stracing it, and found the initial error
    about mmapping a -1 fd.  Then I grepped for failed open() invocations, and
    found an ENOENT one with ~/.nsisconf.nsh.

  - I touched ~/.nsisconf.nsh, and *magic*, now it segfaults *only* when strace
    is not being used.  When strace is in use, it exits normaly, although it's
    still trying to run mmap with -1 as fd.

  - I remove ~/.nsisconf.nsh back again, with no effect (still segfaults only
    on strace-less invocations).  Even if it doesn't segfult, the screwed mmaps
    are still there, so I searched for open() failures.  The following were
    found:

open("/home/rmh/.nsisconf.nsh", O_RDONLY) = -1 ENOENT (No such file or 
directory)
open("/usr/lib/locale/CP0/LC_CTYPE", O_RDONLY) = -1 ENOENT (No such file or 
directory)
open("/usr/lib/gconv/tls/x86_64/libKSC.so", O_RDONLY) = -1 ENOENT (No such file 
or directory)
open("/usr/lib/gconv/tls/libKSC.so", O_RDONLY) = -1 ENOENT (No such file or 
directory)
open("/usr/lib/gconv/x86_64/libKSC.so", O_RDONLY) = -1 ENOENT (No such file or 
directory)
open("/usr/lib/locale/CP950/LC_CTYPE", O_RDONLY) = -1 ENOENT (No such file or 
directory)
open("/usr/lib/locale/CP936/LC_CTYPE", O_RDONLY) = -1 ENOENT (No such file or 
directory)
open("/usr/lib/locale/CP1251/LC_CTYPE", O_RDONLY) = -1 ENOENT (No such file or 
directory)
open("/usr/lib/locale/CP1250/LC_CTYPE", O_RDONLY) = -1 ENOENT (No such file or 
directory)
open("/usr/lib/locale/CP1252/LC_CTYPE", O_RDONLY) = -1 ENOENT (No such file or 
directory)
open("/usr/lib/locale/CP949/LC_CTYPE", O_RDONLY) = -1 ENOENT (No such file or 
directory)
open("/usr/lib/locale/CP932/LC_CTYPE", O_RDONLY) = -1 ENOENT (No such file or 
directory)
open("/usr/lib/locale/CP1255/LC_CTYPE", O_RDONLY) = -1 ENOENT (No such file or 
directory)

Steve, Paul: if you want to reproduce this, I suggest you look for mmap()
invocations using -1.  They do appear and seem to be the root of the problem,
although they don't always generate segfault due to pseudo-random conditions.

If you ask me, I wouldn't feel safe shipping with this bug.  -m32 is not such
a bad solution (compared to a binary that segfaults randomly).

-- 
Robert Millan

My spam trap is [EMAIL PROTECTED]  Note: this address is only intended
for spam harvesters.  Writing to it will get you added to my black list.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to