http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6267352
Synopsis
libld_malloc provides inadequate alignment
Release Fixed
solaris_nevada(snv_16) , solaris_10u1(s10u1_12) (Bug ID:2126961)
"The return values from libld_malloc are aligned on sizeof (size_t) boundaries.
However, the function is used to allocate structures containing long long types,

This bug was never fixed in Solaris 9 and is currently causing our linker to 
crash repeatedly. Can someone answer as to why this bugfix was not ported to 
Solaris 9, and if there is any way that this can be done so a patch can be 
released?

Just to prove that it is this issue:

7284:   mmap(0x00000000, 425984, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFFFFFFFE37400000
7284:       Incurred fault #5, FLTACCESS  %pc = 0xFFFFFFFF7ED20868
7284:         siginfo: SIGBUS BUS_ADRALN addr=0xFFFFFFFEA1888F74
7284:       Received signal #10, SIGBUS [caught]
7284:         siginfo: SIGBUS BUS_ADRALN addr=0xFFFFFFFEA1888F74

The mmap above is dz_map() allocating a new page of HEAPBLOCK size. 
(usr/src/cmd/sgs/libld/common/util.c) A SIGBUS is then generated due to an 
alignment problem. 0xFFFFFFFEA1888F74 is 4-byte aligned, not 8-byte aligned.

This is using the 64-bit linker under Solaris 9.
This message posted from opensolaris.org

Reply via email to