[GHC] #14675: GHC 8.4.1 regression: segfault when loading doctest on a module with ANNs on Ubuntu 16.04 or later
GHC
ghc-devs at haskell.org
Wed Feb 21 13:53:38 UTC 2018
#14675: GHC 8.4.1 regression: segfault when loading doctest on a module with ANNs
on Ubuntu 16.04 or later
-------------------------------------+-------------------------------------
Reporter: RyanGlScott | Owner: bgamari
Type: bug | Status: new
Priority: highest | Milestone: 8.4.1
Component: GHC API | Version: 8.4.1-alpha1
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: Runtime crash | Test Case:
Blocked By: | Blocking:
Related Tickets: #14603 | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by simonmar):
Ok, I think I have a bit more info on this, and a better workaround.
For me the crash happened here:
{{{
(gdb) disassemble 0x0000000040792900,0x0000000040792910
Dump of assembler code from 0x40792900 to 0x40792910:
0x0000000040792900: mov 0x10(%rbp),%rax
0x0000000040792904: mov %rbx,%rcx
0x0000000040792907: and $0x7,%ecx
=> 0x000000004079290a: jmpq *0x403ff568(,%rcx,8)
}}}
and the memory at 0x403ff568 looks bogus. By using `+RTS -Dl` and digging
through the logs, correlating this with `objdump --reloc
HSbase-4.11.0.0.o`, I got that this relocation is:
{{{
00000000004228cd R_X86_64_32S .rodata-0x0000000000451cd8
}}}
which is utterly bogus: we should never have a negative offset into a
section.
The original object file, before it was squashed into `HSbase-4.11.0.0.o`
has this:
{{{
0000000000000b3d R_X86_64_32S .rodata..LneLq
}}}
which is a sensible relocation to the unique section name
`.rodata..LneLq`. Looks like something has gone wrong when we squashed
the object files together to make `HSBase-4.11.0.0.o`.
Indeed, if I take the command line to squash the object files and replace
`ld.gold` with `ld`, then I get this relocation:
{{{
00000000004228cd R_X86_64_32S .rodata+0x000000000000e158
}}}
which is much more sensible. And after doing that, the crashing program
now works.
So this suggests that the workaround should be to avoid using `ld.gold`
for squashing objects together, I'll make a diff.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14675#comment:22>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list