Opened 8 years ago
Closed 8 years ago
#13309 closed bug (fixed)
Jam segfault on --host-only build.
Reported by: | kallisti5 | Owned by: | bonefish |
---|---|---|---|
Priority: | normal | Milestone: | Unscheduled |
Component: | Build System | Version: | R1/Development |
Keywords: | Cc: | ||
Blocked By: | Blocking: | ||
Platform: | All |
Description
Attempting to perform a host-only build (for the tools) results in a segfault from Jam on Fedora 25 x86_64 and Ubuntu 16.10 x86_64.
debug:
>>>>|>>>>|>>>>|>>>>|>>>>|>> set TARGET_DEBUG_5_LOCATE_TARGET = add-ons/kernel/cpu >>>>|>>>>|>>>>|>>>>|>>>>|>> set LOCATE_TARGET = /home/kallisti5/Code/haiku/generated.tools/objects/common/add-ons/kernel/cpu >>>>|>>>>|>>>>|>>>>|>>>>|>> set LOCATE_SOURCE = /home/kallisti5/Code/haiku/generated.tools/objects/common/add-ons/kernel/cpu >>>>|>>>>|>>>>|>>>>|>>>>|>> set SEARCH_SOURCE = /home/kallisti5/Code/haiku/src/add-ons/kernel/cpu /home/kallisti5/Code/haiku/generated.tools/objects/common/add-ons/kernel/cpu /home/kallisti5/Code/haiku/generated.tools/objects/linux/x86_64/common/add-ons/kernel/cpu add-ons/kernel/cpu >>>>|>>>>|>>>>|>>>>|>>> SubInclude HAIKU_TOP src add-ons kernel cpu >>>>|>>>>|>>>>|>>>>|>>>>| ConfigObject HAIKU_TOP src add-ons kernel cpu >>>>|>>>>|>>>>|>>>>|>>>>|>> local config = __config__ >>>>|>>>>|>>>>|>>>>|>>>>|>> FGrist root HAIKU_TOP src add-ons kernel cpu >>>>|>>>>|>>>>|>>>>|>>>>|>> local grist = root!HAIKU_TOP!src!add-ons!kernel!cpu >>>>|>>>>|>>>>|>>>>|>>>>| local config = <root!HAIKU_TOP!src!add-ons!kernel!cpu>__config__ >>>>|>>>>|>>>>|>>>>|>>>>| set __configured = >>>>|>>>>|>>>>|>>>>|>>>>| on <root!HAIKU_TOP!src!add-ons!kernel!cpu>__config__ >>>>|>>>>|>>>>|>>>>|>>>>| set config = <root>__config__ >>>>|>>>>|>>>>|>>>>|>>>>| local oldSubDirTokens = src add-ons kernel cpu >>>>|>>>>|>>>>|>>>>|>>>>| on <root>__config__ >>>>|>>>>|>>>>|>>>>|>>>>| FDirName /home/kallisti5/Code/haiku src add-ons kernel cpu Jamfile >>>>|>>>>|>>>>|>>>>|>>>>|>> local _i = >>>>|>>>>|>>>>|>>>>|>>>>|>> local _s = . >>>>|>>>>|>>>>|>>>>|>>>>|>> set _s = /home/kallisti5/Code/haiku >>>>|>>>>|>>>>|>>>>|>>>>|>> set _s = /home/kallisti5/Code/haiku/src >>>>|>>>>|>>>>|>>>>|>>>>|>> set _s = /home/kallisti5/Code/haiku/src/add-ons >>>>|>>>>|>>>>|>>>>|>>>>|>> set _s = /home/kallisti5/Code/haiku/src/add-ons/kernel >>>>|>>>>|>>>>|>>>>|>>>>|>> set _s = /home/kallisti5/Code/haiku/src/add-ons/kernel/cpu >>>>|>>>>|>>>>|>>>>|>>>>|>> set _s = /home/kallisti5/Code/haiku/src/add-ons/kernel/cpu/Jamfile >>>>|>>>>|>>>>|>>>>|>>>>| include /home/kallisti5/Code/haiku/src/add-ons/kernel/cpu/Jamfile Segmentation fault (core dumped)
(gdb) run -q \<build\>package Starting program: /usr/local/bin/jam -q \<build\>package Starting build of type regular ... AddHaikuImagePackages: package bash not available! AddHaikuImagePackages: package coreutils not available! AddHaikuImagePackages: package curl not available! AddHaikuImagePackages: package freetype not available! AddHaikuImagePackages: package icu not available! AddHaikuImagePackages: package libsolv not available! AddHaikuImagePackages: package zlib not available! AddHaikuImagePackages: package gcc_syslibs not available! /home/kallisti5/Code/haiku/src/add-ons/kernel/bus_managers/config_manager/arch/Jamfile: No such file or directory /home/kallisti5/Code/haiku/src/add-ons/kernel/bus_managers/isa/arch/Jamfile: No such file or directory /home/kallisti5/Code/haiku/src/add-ons/kernel/bus_managers/pci/arch/Jamfile: No such file or directory Program received signal SIGSEGV, Segmentation fault. 0x000055555555ec34 in file_time ()
Attachments (1)
Change History (11)
follow-up: 9 comment:1 by , 8 years ago
comment:3 by , 8 years ago
valgrind is interesting...
$ valgrind jam -q \<build\>package ==15351== Memcheck, a memory error detector ==15351== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al. ==15351== Using Valgrind-3.12.0.SVN and LibVEX; rerun with -h for copyright info ==15351== Command: jam -q \<build\>package ==15351== Starting build of type regular ... AddHaikuImagePackages: package bash not available! AddHaikuImagePackages: package coreutils not available! AddHaikuImagePackages: package curl not available! AddHaikuImagePackages: package freetype not available! AddHaikuImagePackages: package icu not available! AddHaikuImagePackages: package libsolv not available! AddHaikuImagePackages: package zlib not available! AddHaikuImagePackages: package gcc_syslibs not available! /home/kallisti5/Code/haiku/src/add-ons/kernel/bus_managers/config_manager/arch/Jamfile: No such file or directory /home/kallisti5/Code/haiku/src/add-ons/kernel/bus_managers/isa/arch/Jamfile: No such file or directory /home/kallisti5/Code/haiku/src/add-ons/kernel/bus_managers/pci/arch/Jamfile: No such file or directory ==15351== Stack overflow in thread #1: can't grow stack to 0xffe801000 ==15351== ==15351== Process terminating with default action of signal 11 (SIGSEGV) ==15351== Access not within mapped region at address 0xFFE801FC8 ==15351== Stack overflow in thread #1: can't grow stack to 0xffe801000 ==15351== at 0x1142AC: jcache (in /usr/local/bin/jam) ==15351== If you believe this happened as a result of a stack ==15351== overflow in your program's main thread (unlikely but ==15351== possible), you can try to increase the size of the ==15351== main thread stack using the --main-stacksize= flag. ==15351== The main thread stack size used in this run was 8388608. ==15351== Stack overflow in thread #1: can't grow stack to 0xffe801000 ==15351== ==15351== Process terminating with default action of signal 11 (SIGSEGV) ==15351== Access not within mapped region at address 0xFFE801FC0 ==15351== Stack overflow in thread #1: can't grow stack to 0xffe801000 ==15351== at 0x4A276C0: _vgnU_freeres (in /usr/lib/valgrind/vgpreload_core-amd64-linux.so) ==15351== If you believe this happened as a result of a stack ==15351== overflow in your program's main thread (unlikely but ==15351== possible), you can try to increase the size of the ==15351== main thread stack using the --main-stacksize= flag. ==15351== The main thread stack size used in this run was 8388608. ==15351== ==15351== HEAP SUMMARY: ==15351== in use at exit: 38,121,591 bytes in 1,001,187 blocks ==15351== total heap usage: 1,679,302 allocs, 678,115 frees, 65,237,832 bytes allocated ==15351== ==15351== LEAK SUMMARY: ==15351== definitely lost: 24 bytes in 1 blocks ==15351== indirectly lost: 0 bytes in 0 blocks ==15351== possibly lost: 0 bytes in 0 blocks ==15351== still reachable: 38,121,567 bytes in 1,001,186 blocks ==15351== suppressed: 0 bytes in 0 blocks ==15351== Rerun with --leak-check=full to see details of leaked memory ==15351== ==15351== For counts of detected and suppressed errors, rerun with: -v ==15351== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
comment:4 by , 8 years ago
Looks like infinite recursion? What does strace say? My guess is we have some $(ARCH) variable, and some Jamfile tries to include currentDir/$(ARCH)/Jamfile and ends up including itself. Rather blind guess, but if that's the case, we could trace open() calls and see which Jamfile could be doing something like that.
comment:5 by , 8 years ago
The jam debug output shows it? :-)
/home/kallisti5/Code/haiku/src/add-ons/kernel/cpu/Jamfile /home/kallisti5/Code/haiku/src/add-ons/kernel/cpu//Jamfile
TARGET_KERNEL_ARCH ?
comment:6 by , 8 years ago
I disabled the add-on when doing host-only builds:
diff --git a/src/Jamfile b/src/Jamfile index 0aee726..8687565 100644 --- a/src/Jamfile +++ b/src/Jamfile @@ -1,6 +1,9 @@ SubDir HAIKU_TOP src ; -SubInclude HAIKU_TOP src add-ons ; +if $(HAIKU_HOST_BUILD_ONLY) != 1 { + SubInclude HAIKU_TOP src add-ons ; +} + SubInclude HAIKU_TOP src apps ; SubInclude HAIKU_TOP src bin ; SubInclude HAIKU_TOP src build ;
Ran into another loop:
>> include /home/kallisti5/Code/haiku/src/libs/libunwind/Jamfile >>>> include /home/kallisti5/Code/haiku/src/libs/libunwind/Jamfile >>>>|>>> include /home/kallisti5/Code/haiku/src/libs/libunwind/Jamfile >>>>|>>>>|>> include /home/kallisti5/Code/haiku/src/libs/libunwind/Jamfile >>>>|>>>>|>>>> include /home/kallisti5/Code/haiku/src/libs/libunwind/Jamfile >>>>|>>>>|>>>>|>>> include /home/kallisti5/Code/haiku/src/libs/libunwind/Jamfile >>>>|>>>>|>>>>|>>>>|>> include /home/kallisti5/Code/haiku/src/libs/libunwind/Jamfile >>>>|>>>>|>>>>|>>>>|>>>> include /home/kallisti5/Code/haiku/src/libs/libunwind/Jamfile >>>>|>>>>|>>>>|>>>>|>>>>|>>> include /home/kallisti5/Code/haiku/src/libs/libunwind/Jamfile >>>>|>>>>|>>>>|>>>>|>>>>|>>>>|>> include /home/kallisti5/Code/haiku/src/libs/libunwind/Jamfile >>>>|>>>>|>>>>|>>>>|>>>>|>>>>|>>>> include /home/kallisti5/Code/haiku/src/libs/libunwind/Jamfile
That one is "TARGET_ARCH"
comment:7 by , 8 years ago
It appears to be due to the lack of ArchitectureSetup running because HAIKU_PACKAGING_ARCHS is empty. ArchitectureSetup won't run with a dummy arch because it validates the cross compiler :-| how did this stuff ever work post-pm?
comment:8 by , 8 years ago
woot. pretty sure I fixed it. Running build tests on other platforms before pushing.
comment:9 by , 8 years ago
Replying to kallisti5:
reproduction steps:
mkdir generated.tools && cd generated.tools ../configure --host-only jam -q \<build\>package <segfault>
What happens if you try:
mkdir generated.tools && cd generated.tools ../configure --host-only --target=host jam -q \<build\>package
That fixed building bfs_fuse on linux for me, see ticket:12248.
comment:10 by , 8 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
resolved (correctlyish) via hrev50957 :-)
--target=host isn't needed anymore. That might make more sense than --host-only... however --host-only sets a bunch of flags --target=host doesn't... so for now we fix the issue without reworking the host target.
reproduction steps: