View previous topic :: View next topic |
Author |
Message |
Kate Monster Apprentice
Joined: 13 Jun 2006 Posts: 226 Location: Clarkston, Michigan
|
Posted: Fri Nov 14, 2014 2:10 am Post subject: dev-lang/yasm Fails to build with segfault |
|
|
Hi. Curious issue I'm having. I'm attempting to build a gentoo chroot inside of an ubuntu install. Everything was going great until I tried installing yasm. Running emerge -1 yasm results in the following:
Code: | make -j5
make: Circular x86insn_nasm.gperf <- x86insn_nasm.gperf dependency dropped.
make: Circular x86insn_gas.gperf <- x86insn_gas.gperf dependency dropped.
x86_64-pc-linux-gnu-gcc -std=gnu99 -I. \
-c -o genperf.o `test -f tools/genperf/genperf.c || echo './'`tools/genperf/genperf.c
x86_64-pc-linux-gnu-gcc -std=gnu99 -I. \
-c -o gp-perfect.o `test -f tools/genperf/perfect.c || echo './'`tools/genperf/perfect.c
x86_64-pc-linux-gnu-gcc -std=gnu99 -I. \
-c -o gp-phash.o `test -f libyasm/phash.c || echo './'`libyasm/phash.c
x86_64-pc-linux-gnu-gcc -std=gnu99 -I. \
-c -o gp-xmalloc.o `test -f libyasm/xmalloc.c || echo './'`libyasm/xmalloc.c
x86_64-pc-linux-gnu-gcc -std=gnu99 -I. \
-c -o gp-xstrdup.o `test -f libyasm/xstrdup.c || echo './'`libyasm/xstrdup.c
x86_64-pc-linux-gnu-gcc -std=gnu99 -I. \
-c -o re2c-main.o `test -f tools/re2c/main.c || echo './'`tools/re2c/main.c
x86_64-pc-linux-gnu-gcc -std=gnu99 -I. \
-c -o re2c-code.o `test -f tools/re2c/code.c || echo './'`tools/re2c/code.c
x86_64-pc-linux-gnu-gcc -std=gnu99 -I. \
-c -o re2c-dfa.o `test -f tools/re2c/dfa.c || echo './'`tools/re2c/dfa.c
x86_64-pc-linux-gnu-gcc -std=gnu99 -I. \
-c -o re2c-parser.o `test -f tools/re2c/parser.c || echo './'`tools/re2c/parser.c
x86_64-pc-linux-gnu-gcc -std=gnu99 -I. \
-c -o re2c-actions.o `test -f tools/re2c/actions.c || echo './'`tools/re2c/actions.c
x86_64-pc-linux-gnu-gcc -std=gnu99 -I. \
-c -o re2c-scanner.o `test -f tools/re2c/scanner.c || echo './'`tools/re2c/scanner.c
x86_64-pc-linux-gnu-gcc -std=gnu99 -I. \
-c -o re2c-mbo_getopt.o `test -f tools/re2c/mbo_getopt.c || echo './'`tools/re2c/mbo_getopt.c
x86_64-pc-linux-gnu-gcc -std=gnu99 -I. \
-c -o re2c-substr.o `test -f tools/re2c/substr.c || echo './'`tools/re2c/substr.c
x86_64-pc-linux-gnu-gcc -std=gnu99 -I. \
-c -o re2c-translate.o `test -f tools/re2c/translate.c || echo './'`tools/re2c/translate.c
x86_64-pc-linux-gnu-gcc -std=gnu99 -I. \
-c -o genmacro.o `test -f tools/genmacro/genmacro.c || echo './'`tools/genmacro/genmacro.c
x86_64-pc-linux-gnu-gcc -std=gnu99 -I. -c -o genversion.o `test -f modules/preprocs/nasm/genversion.c || echo './'`modules/preprocs/nasm/genversion.c
x86_64-pc-linux-gnu-gcc -std=gnu99 -I. -c -o genstring.o `test -f genstring.c || echo './'`genstring.c
x86_64-pc-linux-gnu-gcc -std=gnu99 -o genperf genperf.o gp-perfect.o gp-phash.o gp-xmalloc.o gp-xstrdup.o
x86_64-pc-linux-gnu-gcc -std=gnu99 -o genmacro genmacro.o
x86_64-pc-linux-gnu-gcc -std=gnu99 -o re2c re2c-main.o re2c-code.o re2c-dfa.o re2c-parser.o re2c-actions.o re2c-scanner.o re2c-mbo_getopt.o re2c-substr.o re2c-translate.o
x86_64-pc-linux-gnu-gcc -std=gnu99 -o genversion genversion.o
./genperf x86insn_nasm.gperf x86insn_nasm.c
./genperf x86insn_gas.gperf x86insn_gas.c
x86_64-pc-linux-gnu-gcc -std=gnu99 -o genstring genstring.o
./genmacro nasm-macros.c nasm_standard_mac ./modules/parsers/nasm/nasm-std.mac
./genversion version.mac
./genmacro win64-nasm.c win64_nasm_stdmac ./modules/objfmts/coff/win64-nasm.mac
./genmacro win64-gas.c win64_gas_stdmac ./modules/objfmts/coff/win64-gas.mac
./re2c -b -o gas-token.c ./modules/parsers/gas/gas-token.re
./re2c -b -o nasm-token.c ./modules/parsers/nasm/nasm-token.re
found distinct (A,B) on attempt 19
built perfect hash table of size 512
./genmacro nasm-version.c nasm_version_mac version.mac
./genstring license_msg license.c ./COPYING
Makefile:4765: recipe for target 'nasm-token.c' failed
make: *** [nasm-token.c] Segmentation fault (core dumped)
make: *** Deleting file 'nasm-token.c'
make: *** Waiting for unfinished jobs....
Makefile:4762: recipe for target 'gas-token.c' failed
make: *** [gas-token.c] Segmentation fault (core dumped)
make: *** Deleting file 'gas-token.c'
found distinct (A,B) on attempt 1640
built perfect hash table of size 512 |
Followed by your usual failure messages. I cd'ed into the work directory, then ran a ./configure and a make -j5 myself, and the results were rather strange. It succeeded to build, but a quick look at a snippet of that build log:
Code: | gcc -std=gnu99 -I. \
-c -o genperf.o `test -f tools/genperf/genperf.c || echo './'`tools/genperf/genperf.c
gcc -std=gnu99 -I. \
-c -o gp-perfect.o `test -f tools/genperf/perfect.c || echo './'`tools/genperf/perfect.c
gcc -std=gnu99 -I. \
-c -o gp-phash.o `test -f libyasm/phash.c || echo './'`libyasm/phash.c
gcc -std=gnu99 -I. \
-c -o gp-xmalloc.o `test -f libyasm/xmalloc.c || echo './'`libyasm/xmalloc.c
gcc -std=gnu99 -I. \
-c -o gp-xstrdup.o `test -f libyasm/xstrdup.c || echo './'`libyasm/xstrdup.c
gcc -std=gnu99 -I. \
-c -o re2c-main.o `test -f tools/re2c/main.c || echo './'`tools/re2c/main.c
gcc -std=gnu99 -I. \
-c -o re2c-code.o `test -f tools/re2c/code.c || echo './'`tools/re2c/code.c
gcc -std=gnu99 -I. \
-c -o re2c-dfa.o `test -f tools/re2c/dfa.c || echo './'`tools/re2c/dfa.c
gcc -std=gnu99 -I. \
-c -o re2c-parser.o `test -f tools/re2c/parser.c || echo './'`tools/re2c/parser.c
gcc -std=gnu99 -I. \
-c -o re2c-actions.o `test -f tools/re2c/actions.c || echo './'`tools/re2c/actions.c
gcc -std=gnu99 -I. \
-c -o re2c-scanner.o `test -f tools/re2c/scanner.c || echo './'`tools/re2c/scanner.c
gcc -std=gnu99 -I. \
-c -o re2c-mbo_getopt.o `test -f tools/re2c/mbo_getopt.c || echo './'`tools/re2c/mbo_getopt.c
gcc -std=gnu99 -I. \
-c -o re2c-substr.o `test -f tools/re2c/substr.c || echo './'`tools/re2c/substr.c
gcc -std=gnu99 -I. \
-c -o re2c-translate.o `test -f tools/re2c/translate.c || echo './'`tools/re2c/translate.c
gcc -std=gnu99 -I. \
-c -o genmacro.o `test -f tools/genmacro/genmacro.c || echo './'`tools/genmacro/genmacro.c
gcc -std=gnu99 -I. -c -o genversion.o `test -f modules/preprocs/nasm/genversion.c || echo './'`modules/preprocs/nasm/genversion.c
gcc -std=gnu99 -I. -c -o genstring.o `test -f genstring.c || echo './'`genstring.c
gcc -std=gnu99 -o genperf genperf.o gp-perfect.o gp-phash.o gp-xmalloc.o gp-xstrdup.o
gcc -std=gnu99 -o re2c re2c-main.o re2c-code.o re2c-dfa.o re2c-parser.o re2c-actions.o re2c-scanner.o re2c-mbo_getopt.o re2c-substr.o re2c-translate.o
./genperf x86insn_nasm.gperf x86insn_nasm.c
./genperf x86insn_gas.gperf x86insn_gas.c
gcc -std=gnu99 -o genversion genversion.o
gcc -std=gnu99 -o genmacro genmacro.o
gcc -std=gnu99 -o genstring genstring.o
found distinct (A,B) on attempt 19
built perfect hash table of size 512
./re2c -b -o gas-token.c ./modules/parsers/gas/gas-token.re
./re2c -b -o nasm-token.c ./modules/parsers/nasm/nasm-token.re
./genstring license_msg license.c ./COPYING
./genversion version.mac
./genmacro nasm-macros.c nasm_standard_mac ./modules/parsers/nasm/nasm-std.mac
./genmacro nasm-version.c nasm_version_mac version.mac
./genmacro win64-nasm.c win64_nasm_stdmac ./modules/objfmts/coff/win64-nasm.mac
./genmacro win64-gas.c win64_gas_stdmac ./modules/objfmts/coff/win64-gas.mac
found distinct (A,B) on attempt 1640
built perfect hash table of size 512 |
No seg fault. What the devil is going on? |
|
Back to top |
|
|
Kate Monster Apprentice
Joined: 13 Jun 2006 Posts: 226 Location: Clarkston, Michigan
|
Posted: Mon Nov 17, 2014 1:47 am Post subject: |
|
|
I guess it goes without saying, but I have tried this several times with the same results, so I seriously doubt it's hardware. The chroot sits on an i7, compiling for a core 2 duo. |
|
Back to top |
|
|
adlerweb n00b
Joined: 01 Aug 2007 Posts: 6
|
Posted: Sat Sep 26, 2015 12:27 pm Post subject: |
|
|
Same here with 1.2.0-r1 and 1.3.0:
Code: | built perfect hash table of size 512
./re2c -b -o gas-token.c ./modules/parsers/gas/gas-token.re
./re2c -b -o nasm-token.c ./modules/parsers/nasm/nasm-token.re
Makefile:4780: recipe for target 'gas-token.c' failed
make: *** [gas-token.c] Segmentation fault
make: *** Deleting file 'gas-token.c'
make: *** Waiting for unfinished jobs....
Makefile:4783: recipe for target 'nasm-token.c' failed
make: *** [nasm-token.c] Segmentation fault
make: *** Deleting file 'nasm-token.c'
|
dmesg:
Code: | [*] re2c[*]: segfault at 0 ip 00007f3cc90441d0 sp 00007fffaa8fdee0 error 4 in libc-2.20.so[7f3cc8fda000+18e000]
[*] re2c[*]: segfault at 0 ip 00007ff5681921d0 sp 00007ffccd9b4300 error 4 in libc-2.20.so[7ff568128000+18e000]
|
CPU is Xeon W3520. Re2c seems to be included, dev-util/re2c is not installed. libc and gcc already rebuild for good measure. I redirected the generated re2c trough strace - last lines:
Code: | open("/tmp/tmpfuxtE34", O_RDWR|O_CREAT|O_EXCL, 0600) = -1 EACCES (Permission denied)
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0} ---
+++ killed by SIGSEGV +++
./re2c: line 2: 6931 Segmentation fault strace ./re2c.org $*
|
Workarround: I had /tmp on my main partition (ext4 with rw,relatime,data=ordered). I mounted a clean tmpfs on /tmp and the compile worked fine. |
|
Back to top |
|
|
Hu Administrator
Joined: 06 Mar 2007 Posts: 23081
|
Posted: Sat Sep 26, 2015 6:28 pm Post subject: |
|
|
That suggests the tool has a bug where failing to open a temporary file causes it to crash. Since /tmp is normally world-writable, most people would not notice the bug. What is the output of ls -ld /tmp when the tmpfs is not mounted? |
|
Back to top |
|
|
sam_ Developer
Joined: 14 Aug 2020 Posts: 2119
|
Posted: Sun Oct 06, 2024 5:46 am Post subject: |
|
|
Someone just hit this today on IRC too. See bug 677456 as well. |
|
Back to top |
|
|
|