Bug ID 1100690
Summary windows:mingw:win32/mingw32-cross-nsis: Bug segfault when used in OBS worker or OSC chroot
Classification openSUSE
Product openSUSE.org
Version unspecified
Hardware x86-64
OS openSUSE 42.3
Status NEW
Severity Normal
Priority P5 - None
Component 3rd party software
Assignee fridrich.strba@bluewin.ch
Reporter thomas@ruecker.fi
QA Contact bnc-team-screening@forge.provo.novell.com
CC fstrba@suse.com, hib@hiberis.nl, idonmez@suse.com, mkbosmans@gmail.com, tlillqvist@suse.com
Found By ---
Blocker ---

I've spent yesterday trying to figure out how to work around it. My package is:
https://build.opensuse.org/package/show/home:dm8tbr/mingw32-icecast-installer

I forked mingw32-cross-nsis to ensure it wasn't a stale binary.
I also included openSUSE_Leap_42.3:updates for that target to rule out it was
the updated glibc.

I verified that it happens on the following targets:
* openSUSE_13.2
* openSUSE_Leap_15.0
* openSUSE_Leap_42.3
* openSUSE_Tumbleweed

It happens both on OBS workers and in OSC build/chroot.
It does however not happen on full distro installations. This made me at first
suspect an undeclared runtime dependency, but I fail to find the usual signs of
it in backtraces and strace output.

$ osc build --clean win32_openSUSE_Leap_42.3 x86_64
���
[   16s] + makensis icecast.nsis -V4
[   16s] Processing config: /etc/nsisconf.nsh
[   16s] Processing script file: "icecast.nsis" (UTF8)
[   16s] /var/tmp/rpm-tmp.5kt6vn: line 33:  8023 Segmentation fault     
makensis icecast.nsis -V4
[   16s] error: Bad exit status from /var/tmp/rpm-tmp.5kt6vn (%build)

$ strace -f makensis icecast.nsis -V4
���
open("/usr/share/nsis/Include/Util.nsh", O_RDONLY) = 7
lseek(7, 0, SEEK_CUR)                   = 0
fstat(7, {st_mode=S_IFREG|0755, st_size=4659, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x7f9a4ad1e000
lseek(7, 0, SEEK_SET)                   = 0
read(7, "; ---------------------\r\n;      "..., 4096) = 4096
lseek(7, 4096, SEEK_SET)                = 4096
stat("/usr/share/nsis/Include/Util.nsh", {st_mode=S_IFREG|0755, st_size=4659,
...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=127, ...}) = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x1c72000} ---
+++ killed by SIGSEGV +++
Segmentation fault

$ gdb --args makensis icecast.nsis    
GNU gdb (GDB; openSUSE Leap 42.3) 8.0
���
Reading symbols from makensis...Reading symbols from
/usr/lib/debug/usr/bin/makensis.debug...done.
done.
(gdb) run
Starting program: /usr/bin/makensis icecast.nsis
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Processing config: /etc/nsisconf.nsh
Processing script file: "icecast.nsis" (UTF8)

Program received signal SIGSEGV, Segmentation fault.
wcslen () at ../sysdeps/x86_64/wcslen.S:126
126    ../sysdeps/x86_64/wcslen.S: No such file or directory.
(gdb) bt
#0  wcslen () at ../sysdeps/x86_64/wcslen.S:126
#1  0x0000000000440758 in CEXEBuild::GetMacro(wchar_t const*, wchar_t**) ()
#2  0x0000000000443f2d in CEXEBuild::pp_macro(LineParser&) ()
#3  0x0000000000435bad in CEXEBuild::doCommand(int, LineParser&) ()
#4  0x000000000043e9b3 in CEXEBuild::doParse(wchar_t const*) ()
#5  0x000000000043f6ee in CEXEBuild::parseScript() ()
#6  0x000000000044197d in CEXEBuild::includeScript(wchar_t const*,
NStreamEncoding&) ()
#7  0x00000000004424f1 in CEXEBuild::pp_include(LineParser&) ()
#8  0x000000000043348a in CEXEBuild::doCommand(int, LineParser&) ()
#9  0x000000000043e9b3 in CEXEBuild::doParse(wchar_t const*) ()
#10 0x000000000043f6ee in CEXEBuild::parseScript() ()
#11 0x000000000044197d in CEXEBuild::includeScript(wchar_t const*,
NStreamEncoding&) ()
#12 0x00000000004424f1 in CEXEBuild::pp_include(LineParser&) ()
#13 0x000000000043348a in CEXEBuild::doCommand(int, LineParser&) ()
#14 0x000000000043e9b3 in CEXEBuild::doParse(wchar_t const*) ()
#15 0x000000000043f6ee in CEXEBuild::parseScript() ()
#16 0x000000000044197d in CEXEBuild::includeScript(wchar_t const*,
NStreamEncoding&) ()
#17 0x00000000004422d8 in CEXEBuild::pp_include(LineParser&) ()
#18 0x000000000043348a in CEXEBuild::doCommand(int, LineParser&) ()
#19 0x000000000043e9b3 in CEXEBuild::doParse(wchar_t const*) ()
#20 0x000000000043f6ee in CEXEBuild::parseScript() ()
#21 0x000000000044197d in CEXEBuild::includeScript(wchar_t const*,
NStreamEncoding&) ()
#22 0x00000000004424f1 in CEXEBuild::pp_include(LineParser&) ()
#23 0x000000000043348a in CEXEBuild::doCommand(int, LineParser&) ()
#24 0x000000000043e9b3 in CEXEBuild::doParse(wchar_t const*) ()
#25 0x000000000043f6ee in CEXEBuild::parseScript() ()
#26 0x000000000043f8eb in CEXEBuild::process_script(NIStream&, wchar_t const*)
()
#27 0x0000000000421828 in makensismain(int, wchar_t**) ()
#28 0x00000000004046aa in main ()

There are no annotations despite the -debug packages being installed and
makensis.debug being loaded.

I inspected '/usr/share/nsis/Include/Util.nsh' but failed to spot anything
obvious in the first two lines (bt indicates 5 lines being parsed?).

I suspect it's *something* from one of the 900ish packages of a headless
OpenSUSE install that makes this work. I tried installing all glibc packages to
match things, but that didn't help. Running it as part of rpmbuild on a regular
install works too.

Oh, and yes, this has worked in the past. The last successful build run that
I'm sure of is from 2016.

I hope the package maintainer


You are receiving this mail because: