boost 1.34.1 build failed with segfaulting bjam using gcc4.2.3
> $ strace tools/jam/src/bin.linuxx86/bjam execve("tools/jam/src/bin.linuxx86/bjam", ["tools/jam/src/bin.linuxx86/bjam"], [/* 236 vars */]) = 0 brk(0) = 0x8071000 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or
Hi boosters I just tried to build boost 1.34.1 from source on my laptop running Linux Ubuntu 8.04 and gcc version 4.2.3. Unfortunately it failed at the very beginning: $ ./configure --prefix=/scratch/sw/boost/install-1_34_1-gcc42 \ --with-libraries=date_time,filesystem,\ iostreams,program_options,python,serialization,thread #!!! ---> here the bjam binary is built Building Boost.Jam with toolset gcc... tools/jam/src/bin.linuxx86/bjam Detecting Python version... 2.5 Detecting Python root... /usr Unicode/ICU support for Boost.Regex?... /usr Backing up existing Boost.Build configuration in user-config.jam.1 Generating Boost.Build configuration in user-config.jam... Generating Makefile... $ make ./tools/jam/src/bin.linuxx86/bjam -sICU_PATH=/usr --user-config=user-config.jam --with-date_time --with-filesystem --with-iostreams --with-program_options --with-python --with-serialization --with-thread Segmentation fault <=== BLAM! strace output that prints: directory) mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fb8000 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fb7000 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fb6000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) ... open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=66160, ...}) = 0 mmap2(NULL, 66160, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7fa5000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260e\1"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=1364388, ...}) = 0 mmap2(NULL, 1369712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e56000 mmap2(0xb7f9f000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x149) = 0xb7f9f000 mmap2(0xb7fa2000, 9840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7fa2000 close(3) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7e55000 set_thread_area({entry_number:-1 -> 6, base_addr:0xb7e556b0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0 mprotect(0xb7f9f000, 4096, PROT_READ) = 0 munmap(0xb7fa5000, 66160) = 0 time(NULL) = 1218843031 brk(0) = 0x8071000 brk(0x8092000) = 0x8092000 open("/etc/localtime", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=2945, ...}) = 0 fstat64(3, {st_mode=S_IFREG|0644, st_size=2945, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fb5000 read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\f\0\0\0\f\0\0"..., 4096) = 2945 _llseek(3, -28, [2917], SEEK_CUR) = 0 read(3, "\nCET-1CEST,M3.5.0,M10.5.0/3\n", 4096) = 28 close(3) = 0 munmap(0xb7fb5000, 4096) = 0 uname({sys="Linux", node="mauger-laptop", ...}) = 0 brk(0x80b3000) = 0x80b3000 brk(0x80d4000) = 0x80d4000 brk(0x80f5000) = 0x80f5000 --- SIGSEGV (Segmentation fault) @ 0 (0) --- +++ killed by SIGSEGV +++ Process 6883 detached <<<<<<<<<<<<<<<< I'm not familiar with the 'strace' utility so I cannot guess whatever useful from this output. So my pb comes from the brand new bjam executable (tools/jam/src/bin.linuxx86/bjam) that segfaults systematically for some mystery reason. Using bjam from the 'bjam' Debian package is ok so I can of course use the '--with-bjam=/usr/bin/bjam' switch to build the whole boost stuff. But I'm not satisfied with this solution for the standard boost build procedure worked perfectly as expected for boost 1.34.1 under my previous Ubuntu 7.04/gcc 4.1 and also for the new boost 1.36.0/gcc 4.2.3. Maybe someone could give me some hints to understand this problem? thanks a lot regards frc -- Francois Mauger Laboratoire de Physique Corpusculaire de Caen et Universite de Caen
François Mauger wrote:
Hi boosters
I just tried to build boost 1.34.1 from source on my laptop running Linux Ubuntu 8.04 and gcc version 4.2.3. Unfortunately it failed at the very beginning: ...... ./tools/jam/src/bin.linuxx86/bjam -sICU_PATH=/usr --user-config=user-config.jam --with-date_time --with-filesystem --with-iostreams --with-program_options --with-python --with-serialization --with-thread Segmentation fault <=== BLAM!
strace output that prints:
>> $ strace tools/jam/src/bin.linuxx86/bjam execve("tools/jam/src/bin.linuxx86/bjam", ["tools/jam/src/bin.linuxx86/bjam"], [/* 236 vars */]) = 0 ..... I'm not familiar with the 'strace' utility so I cannot guess whatever useful from this output.
strace, while been a highly useful tool for some cases, is not a tool one would use to debug a segfault, in general.
So my pb comes from the brand new bjam executable (tools/jam/src/bin.linuxx86/bjam) that segfaults systematically for some mystery reason.
Using bjam from the 'bjam' Debian package is ok so I can of course use the '--with-bjam=/usr/bin/bjam' switch to build the whole boost stuff. But I'm not satisfied with this solution for the standard boost build procedure worked perfectly as expected for boost 1.34.1 under my previous Ubuntu 7.04/gcc 4.1 and also for the new boost 1.36.0/gcc 4.2.3.
Maybe someone could give me some hints to understand this problem?
I don't know for sure, without a stacktrace, but the most likely reason is a mismatch between your bjam version and gcc version. Some of bjam code, going back as far as Perforce Jam, uses casts liberally, which gcc optimizer does not like. Technically, gcc is right, but nobody was able to comprehend its objections fully. gcc 4.1 is not affected by this issue, and 1.36.0 bjam works this issue around. - Volodya
participants (2)
-
François Mauger
-
Vladimir Prus