NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
kern/58158: TLS pointer gets randomly NULL when running i386 binaries on NetBSD-10.0/amd64
>Number: 58158
>Category: kern
>Synopsis: TLS pointer gets randomly NULL when running i386 binaries on NetBSD-10.0/amd64
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: kern-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Tue Apr 16 15:50:00 +0000 2024
>Originator: Emmanuel Dreyfus
>Release: NetBSD 10.0
>Organization:
NetBSD
>Environment:
NetBSD lego 10.0 NetBSD 10.0 (XEN3_DOMU) #0: Thu Mar 28 08:33:33 UTC 2024 mkrepro%mkrepro.NetBSD.org@localhost:/usr/src/sys/arch/xen/compile/XEN3_DOMU amd64
>Description:
I cross-build i386 packages on an amd64 machine, using pkg_comp with
CFLAHS-m32 in /etc/mk.conf.
That worked well on NetBSD-9 but after upgradint to NetBSD-10.0, I get
random SIGSEGV during the build. It seems to happen in malloc-related code, and the culprit is a NULL GS register.
Here is an example:
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0xf4bde597 in tsd_fetch_impl (minimal=false, init=true)
at /usr/src/external/bsd/jemalloc/lib/../include/jemalloc/internal/tsd.h:270
270 return tsd;
(gdb) bt
#0 0xf4bde597 in tsd_fetch_impl (minimal=false, init=true)
at /usr/src/external/bsd/jemalloc/lib/../include/jemalloc/internal/tsd.h:270
#1 tsd_fetch ()
at /usr/src/external/bsd/jemalloc/lib/../include/jemalloc/internal/tsd.h:291
#2 imalloc (dopts=<synthetic pointer>, sopts=<synthetic pointer>)
at /usr/src/external/bsd/jemalloc/lib/../dist/src/jemalloc.c:2036
#3 malloc (size=size@entry=60)
at /usr/src/external/bsd/jemalloc/lib/../dist/src/jemalloc.c:2075
#4 0xf4c3e1fd in _citrus_lookup_seq_open (rcl=rcl@entry=0xfff0b898,
name=0xf4c6ba6b "/usr/share/nls/nls.alias", ignore_case=0)
at /usr/src/lib/libc/citrus/citrus_lookup.c:277
#5 0xf4c3e35e in _citrus_lookup_simple (
name=name@entry=0xf4c6ba6b "/usr/share/nls/nls.alias",
key=key@entry=0xf4c6d2d6 <_lc_C_locale_name> "C",
linebuf=linebuf@entry=0xfff0b8df "", linebufsize=linebufsize@entry=1024,
ignore_case=ignore_case@entry=0)
at /usr/src/lib/libc/citrus/citrus_lookup.c:340
#6 0xf4c30ec6 in __unaliasname (bufsize=1024, buf=0xfff0b8df,
alias=0xf4c6d2d6 <_lc_C_locale_name> "C",
dbname=0xf4c6ba6b "/usr/share/nls/nls.alias")
at /usr/src/lib/libc/citrus/citrus_aliasname_local.h:36
#7 _catopen_l (name=0xf4c61a6c "libc", oflag=<optimized out>,
loc=0xf4cacaa0 <_lc_global_locale>) at /usr/src/lib/libc/nls/catopen.c:108
#8 0xf4c31131 in _catopen (name=name@entry=0xf4c61a6c "libc", oflag=1)
at /usr/src/lib/libc/compat/../locale/setlocale_local.h:93
#9 0xf4b63625 in __strsignal (num=num@entry=11, buf=0xf4cad0e0 <buf> "",
buflen=2048) at /usr/src/lib/libc/string/__strsignal.c:67
#10 0xf4b128e0 in _strsignal (sig=sig@entry=11)
at /usr/src/lib/libc/string/strsignal.c:55
#11 0x00d82e5d in signal_crash (signo=11)
at /usr/src/external/gpl3/binutils/usr.bin/gas/../../dist/gas/messages.c:329
#12 <signal handler called>
#13 0xf4bde597 in tsd_fetch_impl (minimal=false, init=true)
at /usr/src/external/bsd/jemalloc/lib/../include/jemalloc/internal/tsd.h:270
#14 tsd_fetch ()
at /usr/src/external/bsd/jemalloc/lib/../include/jemalloc/internal/tsd.h:291
#15 imalloc (dopts=<synthetic pointer>, sopts=<synthetic pointer>)
at /usr/src/external/bsd/jemalloc/lib/../dist/src/jemalloc.c:2036
#16 malloc (size=512)
at /usr/src/external/bsd/jemalloc/lib/../dist/src/jemalloc.c:2075
#17 0x00dc29d8 in xrealloc ()
#18 0x00daf1cd in build_group_lists (abfd=0xf4926000, sec=0xf4a863cc,
inf=0xdecb14 <groups>)
at /usr/src/external/gpl3/binutils/usr.bin/gas/../../dist/gas/config/obj-elf.c:2448
#19 0xf4daa30b in bfd_map_over_sections (abfd=0xf4926000,
operation=0xdaf10b <build_group_lists>, user_storage=0xdecb14 <groups>)
at /usr/src/external/gpl3/binutils/lib/libbfd/../../dist/bfd/section.c:1362
#20 0x00daeefc in elf_adjust_symtab ()
at /usr/src/external/gpl3/binutils/usr.bin/gas/../../dist/gas/config/obj-elf.c:2475
#21 0x00d9785c in write_object_file ()
at /usr/src/external/gpl3/binutils/usr.bin/gas/../../dist/gas/write.c:2428
#22 0x00dc4275 in main (argc=<optimized out>, argv=<optimized out>)
at /usr/src/external/gpl3/binutils/usr.bin/gas/../../dist/gas/as.c:1403
(gdb) disas 0xf4bde597
0xf4bde56c <+0>: push %ebp
0xf4bde56d <+1>: mov %esp,%ebp
0xf4bde56f <+3>: push %edi
0xf4bde570 <+4>: push %esi
0xf4bde571 <+5>: push %ebx
0xf4bde572 <+6>: sub $0x30,%esp
0xf4bde575 <+9>: call 0xf4c5d339 <__x86.get_pc_thunk.bx>
0xf4bde57a <+14>: add $0xcaa86,%ebx
0xf4bde580 <+20>: mov 0x8(%ebp),%edi
0xf4bde583 <+23>: mov 0x285c(%ebx),%eax
0xf4bde589 <+29>: test %eax,%eax
0xf4bde58b <+31>: jne 0xf4bde66f <malloc+259>
0xf4bde591 <+37>: mov -0x2d0(%ebx),%ecx
=> 0xf4bde597 <+43>: mov %gs:0x0,%esi
0xf4bde59e <+50>: add %ecx,%esi
(gdb) info reg $gs
gs 0x0 0
>How-To-Repeat:
Bulk-build i386 packages on an amd64 machine
>Fix:
None known yet
Home |
Main Index |
Thread Index |
Old Index