[Bug 216206] editors/openoffice-4 and editors/openoffice-devel: fails to build with clang 4.0

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Fri Jan 27 08:02:00 UTC 2017


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=216206

--- Comment #19 from Don Lewis <truckman at FreeBSD.org> ---
(In reply to Pedro F. Giffuni from comment #18)

Disabling SSE just hides the problem, one of these unaligned pointers could be
passed to code that doesn't have SSE disabled.

I dug into rtl_cache_alloc() and friends and discovered these use mmap()
instead of calling malloc().  Their interfaces are very unlike malloc(), so
replacing them with system malloc() would be difficult.  I did hack on the
implementation to try to get them to do the proper alignment.

Using system malloc() I'm still seeing idlc core dump in the offapi module
build.  This is a case where new has been overridden to call allocate(), which
calls rtl_allocateMemory(), which calls malloc().  The problem is that it
appears to be calling the malloc() implementation built into rtld instead of
the libc implemenation.

reakpoint 1 (malloc) pending.
(gdb) run @/tmp/r
Starting program:
/wrkdirs/usr/ports/editors/openoffice-devel/work/aoo-4.2.0/main/solver/420/unxfbsdx.pro/bin/idlc
@/tmp/r
[New LWP 101741]
Breakpoint 2 at 0x8006a5f01: file
/var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc.c, line 163.
Pending breakpoint "malloc" resolved
Trace 67695/1: "Min Prioriy for policy '2' == '0'
"
Trace 67695/1: "Max Prioriy for policy '2' == '103'
"
/wrkdirs/usr/ports/editors/openoffice-devel/work/aoo-4.2.0/main/solver/420/unxfbsdx.pro/bin/idlc:
compiling 1 source files ... 
Compiling:
/wrkdirs/usr/ports/editors/openoffice-devel/work/aoo-4.2.0/main/offapi/com/sun/star/i18n/KParseTokens.idl
[New Thread 802616000 (LWP 101741/idlc)]
[Switching to Thread 802616000 (LWP 101741/idlc)]

Breakpoint 2, malloc (nbytes=343)
    at /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc.c:163
163     /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc.c:
No such file or directory.
        in /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc.c
Current language:  auto; currently minimal
(gdb) cont
Continuing.

Breakpoint 2, malloc (nbytes=32)
    at /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc.c:163
163     in /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc.c
(gdb) cont
Continuing.
Trace 67962/2: "ChildStatusProc : starting
'/wrkdirs/usr/ports/editors/openoffice-devel/work/aoo-4.2.0/main/solver/420/unxfbsdx.pro/bin/ucpp'"
[New Thread 802616500 (LWP 100242/idlc)]
[Switching to Thread 802616500 (LWP 100242/idlc)]

Breakpoint 2, malloc (nbytes=19)
    at /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc.c:163
163     in /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc.c
(gdb) cont
Continuing.

Breakpoint 2, malloc (nbytes=34)
    at /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc.c:163
163     in /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc.c
(gdb) cont
Continuing.

Breakpoint 2, malloc (nbytes=16)
    at /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc.c:163
163     in /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc.c
(gdb) cont
Continuing.

Breakpoint 2, malloc (nbytes=16)
    at /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc.c:163
163     in /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc.c
(gdb) cont
Continuing.

Breakpoint 2, malloc (nbytes=16)
    at /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc.c:163
163     in /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc.c
(gdb) cont
Continuing.

Breakpoint 2, malloc (nbytes=16)
    at /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc.c:163
163     in /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc.c
(gdb) cont
Continuing.
sizeof(AstExprValue)=16

Program received signal SIGBUS, Bus error.
[Switching to Thread 802616000 (LWP 101741/idlc)]
0x0000000000478cc2 in AstExpression::eval_bit_op (this=0x802633dc8, 
    ek=EK_const) at astexpression.cxx:1001
1001        std::auto_ptr< AstExprValue > retval(new AstExprValue());

This is occurring even though idlc is linked to libc.so:

LD_LIBRARY_PATH=/wrkdirs/usr/ports/editors/openoffice-devel/work/aoo-4.2.0/main/solver/420/unxfbsdx.pro/lib
ldd solver/420/unxfbsdx.pro/bin/idlc
solver/420/unxfbsdx.pro/bin/idlc:
        libreg.so.3 =>
/wrkdirs/usr/ports/editors/openoffice-devel/work/aoo-4.2.0/main/solver/420/unxfbsdx.pro/lib/libreg.so.3
(0x8008b9000)
        libuno_sal.so.3 =>
/wrkdirs/usr/ports/editors/openoffice-devel/work/aoo-4.2.0/main/solver/420/unxfbsdx.pro/lib/libuno_sal.so.3
(0x800c00000)
        libuno_salhelpergcc3.so.3 =>
/wrkdirs/usr/ports/editors/openoffice-devel/work/aoo-4.2.0/main/solver/420/unxfbsdx.pro/lib/libuno_salhelpergcc3.so.3
(0x801040000)
        libm.so.5 => /lib/libm.so.5 (0x801244000)
        libc++.so.1 => /usr/lib/libc++.so.1 (0x80146e000)
        libcxxrt.so.1 => /lib/libcxxrt.so.1 (0x801735000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x801953000)
        libthr.so.3 => /lib/libthr.so.3 (0x801b69000)
        libc.so.7 => /lib/libc.so.7 (0x801d91000)
        libstore.so.3 =>
/wrkdirs/usr/ports/editors/openoffice-devel/work/aoo-4.2.0/main/solver/420/unxfbsdx.pro/lib/libstore.so.3
(0x802152000)

I'm unable to reproduce this oddity with a simple test program.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-office mailing list