[GHC] #15482: the_gc_thread variable from GC.c is not aligned to 64
GHC
ghc-devs at haskell.org
Mon Aug 6 16:09:42 UTC 2018
#15482: the_gc_thread variable from GC.c is not aligned to 64
-------------------------------------+-------------------------------------
Reporter: arrowd | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone: 8.6.1
Component: Compiler | Version: 8.4.3
Keywords: | Operating System: Unknown/Multiple
Architecture: x86_64 | Type of failure: None/Unknown
(amd64) |
Test Case: | Blocked By:
Blocking: | Related Tickets:
Differential Rev(s): | Wiki Page:
-------------------------------------+-------------------------------------
When compiling GHC with clang and -march=native flag, the compiler emits
vmovaps instruction with unaligned operand for this code:
{{{
* thread #1, name = 'ghc-pkg', stop reason = signal SIGBUS: hardware error
frame #0: 0x0000000804e476c6 libHSrts-ghc8.0.2.so`initGcThreads
[inlined] new_gc_thread(n=0) at GC.c:818
815 ws->todo_q = newWSDeque(128);
816 ws->todo_overflow = NULL;
817 ws->n_todo_overflow = 0;
-> 818 ws->todo_large_objects = NULL;
819
820 ws->part_list = NULL;
821 ws->n_part_blocks = 0;
}}}
Research done by another FreeBSD developer suggested that this is due
{{{
StgWord8 the_gc_thread[sizeof(gc_thread) + 64 * sizeof(gen_workspace)];
}}}
not being aligned to 64 bytes, because struct gc_thread have no alignment
specifier.
Detailed information can be found in FreeBSD bugzilla:
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=226059
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/15482>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list