Subsurface crashes on launch in OS Mavericks

Thiago Macieira thiago at macieira.org
Sat Jan 11 19:24:14 UTC 2014


On domingo, 12 de janeiro de 2014 07:42:40, Linus Torvalds wrote:
> On Jan 12, 2014 6:55 AM, "Dirk Hohndel" <dirk at hohndel.org> wrote:
> > can you also send the output of "uname -a"
> > (just making sure you Core 2 Duo is indeed running in 64bit mode as it
> > should)
> 
> You can tell from the register dump that it's in 64-bit mode, so that part
> should be fine.
> 
> It looks (again, from the registers) like it crashed in marble. Weren't
> there problems with alternate installations of marble being found first on
> OSX?

There were: if the person had built Marble locally, its plugins might be found 
by Subsurface but they might be incompatible.

But I don't see that in the backtrace. It looks like it crashed before main, 
in a global initialiser in QtGui. The RIP register has value 
0x0000000101f78244, which places it in QtGui:

       0x101f39000 -        0x102798ff7 +QtGui (4.8.5)
<C79B33C7-A7FB-38B6-A0FA-C5D62F1A3018>
/Applications/Subsurface.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui

And the backtrace:
Thread
0 Crashed:: Dispatch queue: com.apple.main-thread
0   QtGui                                0x0000000101f78244 0x101f39000 + 
258628

It's close enough to the beginning of QtGui to be in the text section: 

$ otool -l QtGui
QtGui:
Load command 0
      cmd LC_SEGMENT_64
  cmdsize 1032
  segname __TEXT
   vmaddr 0x0000000000000000
   vmsize 0x0000000000934000
  fileoff 0
 filesize 9650176
  maxprot 0x00000007
 initprot 0x00000005
   nsects 12
    flags 0x0
Section
  sectname __text
   segname __TEXT
      addr 0x0000000000004d00
      size 0x0000000000658bf8
    offset 19712
     align 2^4 (16)
    reloff 0
    nreloc 0
     flags 0x80000400
 reserved1 0
 reserved2 0

If I disassemble 258628 (0x3f244) bytes from the beginning, I see:
__ZN14QDesktopWidgetD1Ev:
000000000003f240        pushq   %rbp
000000000003f241        movq    %rsp, %rbp
000000000003f244        popq    %rbp
000000000003f245        jmpq    __ZN7QWidgetD2Ev
000000000003f24a        nopw    (%rax,%rax)

I don't see how that 1-byte instruction can cause a SIGILL, especially since 
there's a push two instructions below that didn't cause a problem.

It's possible that I didn't locate the correct instruction. Which begs the 
question: what kind of crash reporter shows a SIGILL but doesn't include the 
bytes close to RIP?

-- 
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
   Software Architect - Intel Open Source Technology Center
      PGP/GPG: 0x6EF45358; fingerprint:
      E067 918B B660 DBD1 105C  966C 33F5 F005 6EF4 5358
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 190 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.hohndel.org/pipermail/subsurface/attachments/20140111/19df481a/attachment.sig>


More information about the subsurface mailing list