mId in nsUrlClassifierEntry needs to be 8-byte aligned in order to be accessable. For some reason it's only 4-byte aligned, though gcc should know that long long needs to be 8-byte aligned on sparc, it's 4-byte even with __attribute__ ((aligned(8))) specified. This patch adds a dummy and uses the packed attribute to force the correct alignment. For reference: lots of gdb output: Program received signal SIGBUS, Bus error. [Switching to Thread 0xf194fb90 (LWP 21159)] nsTArray::AppendElements (this=0xf194ed88, count=1) at nsUrlClassifierDBService.cpp:292 292 , mAddChunkId(0) Current language: auto; currently c++ (gdb) info frame Stack level 0, frame at 0xf194ec48: pc = 0xf742e5e8 in nsTArray::AppendElements(unsigned int) (nsUrlClassifierDBService.cpp:292); saved pc 0xf7425448 called by frame at 0xf194ecb8 source language c++. Arglist at 0xf194ec48, args: this=0xf194ed88, count=1 Locals at 0xf194ec48, Previous frame's sp in fp Saved registers: l0 at 0xf194ec48, l1 at 0xf194ec4c, l2 at 0xf194ec50, l3 at 0xf194ec54, l4 at 0xf194ec58, l5 at 0xf194ec5c, l6 at 0xf194ec60, l7 at 0xf194ec64, i0 at 0xf194ec68, i1 at 0xf194ec6c, i2 at 0xf194ec70, i3 at 0xf194ec74, i4 at 0xf194ec78, i5 at 0xf194ec7c, fp at 0xf194ec80, i7 at 0xf194ec84 (gdb) disass $pc $pc+4 Dump of assembler code from 0xf742e5e8 to 0xf742e5ec: 0xf742e5e8 <_ZN8nsTArrayI20nsUrlClassifierEntryE14AppendElementsEj+112>: std %o4, [ %g1 ] End of assembler dump. (gdb) info register $o4 o4 0xffffffff -1 (gdb) info register $g1 g1 0xf194ed94 -241898092 diff --git a/toolkit/components/url-classifier/src/nsUrlClassifierDBService.cpp b/toolkit/components/url-classifier/src/nsUrlClassifierDBService.cpp index adee847..88784ac 100644 --- a/toolkit/components/url-classifier/src/nsUrlClassifierDBService.cpp +++ b/toolkit/components/url-classifier/src/nsUrlClassifierDBService.cpp @@ -332,7 +332,9 @@ public: (mHaveComplete && mCompleteHash < entry.mCompleteHash)); } - PRInt64 mId; + char __dummy_to_make_mid_aligned[4]; + + PRInt64 mId __attribute__ ((packed)); nsUrlClassifierDomainHash mKey;