wrl/rove

build failure

Opened this issue · 5 comments

while compiling rove from latest git:


CCFLAGS="-march=native -fomit-frame-pointer -O2 -pipe" LINKFLAGS="-Wl,-O1 -Wl,--as-needed" "/var/tmp/portage/media-sound/rove-9999/work/rove-9999/waf" --prefix=/usr configure
Setting top to : /var/tmp/portage/media-sound/rove-9999/work/rove-9999
Setting out to : /var/tmp/portage/media-sound/rove-9999/work/rove-9999/build

Checking for 'gcc' (c compiler) : x86_64-pc-linux-gnu-gcc

Checking for libmonome : yes
Checking for JACK : yes
Checking for libsndfile : yes
Checking for libsamplerate : yes

'configure' finished successfully (2.088s)

Source configured.
Compiling source in /var/tmp/portage/media-sound/rove-9999/work/rove-9999 ...
"/var/tmp/portage/media-sound/rove-9999/work/rove-9999/waf" build --verbose --jobs=2
Waf: Entering directory /var/tmp/portage/media-sound/rove-9999/work/rove-9999/build' [ 1/11] c: src/list.c -> build/src/list.c.2.o 19:12:12 runner ['x86_64-pc-linux-gnu-gcc', '-march=native', '-fomit-frame-pointer', '-O2', '-pipe', '-std=c99', '-Wall', '-Werror', '-D_GNU_SOURCE', '-I/var/tmp/portage/media-sound/rove-9999/work/rove-9999/build/src/private', '-I/var/tmp/portage/media-sound/rove-9999/work/rove-9999/src/private', '-DHAVE_MONOME_H=1', '-DHAVE_JACK_JACK_H=1', '-DHAVE_SNDFILE_H=1', '-DHAVE_SRC=1', '../src/list.c', '-c', '-o', 'src/list.c.2.o'] [ 2/11] c: src/settings.c -> build/src/settings.c.2.o 19:12:12 runner ['x86_64-pc-linux-gnu-gcc', '-march=native', '-fomit-frame-pointer', '-O2', '-pipe', '-std=c99', '-Wall', '-Werror', '-D_GNU_SOURCE', '-I/var/tmp/portage/media-sound/rove-9999/work/rove-9999/build/src/private', '-I/var/tmp/portage/media-sound/rove-9999/work/rove-9999/src/private', '-DHAVE_MONOME_H=1', '-DHAVE_JACK_JACK_H=1', '-DHAVE_SNDFILE_H=1', '-DHAVE_SRC=1', '../src/settings.c', '-c', '-o', 'src/settings.c.2.o'] ../src/list.c: In function 'list_pop_raw': ../src/list.c:114:17: error: 'm' may be used uninitialized in this function [-Werror=uninitialized] cc1: all warnings being treated as errors Waf: Leaving directory/var/tmp/portage/media-sound/rove-9999/work/rove-9999/build'
Build failed
-> task in 'rove' failed (exit status 1):
{task 39625744: c list.c -> list.c.2.o}
['x86_64-pc-linux-gnu-gcc', '-march=native', '-fomit-frame-pointer', '-O2', '-pipe', '-std=c99', '-Wall', '-Werror', '-D_GNU_SOURCE', '-I/var/tmp/portage/media-sound/rove-9999/work/rove-9999/build/src/private', '-I/var/tmp/portage/media-sound/rove-9999/work/rove-9999/src/private', '-DHAVE_MONOME_H=1', '-DHAVE_JACK_JACK_H=1', '-DHAVE_SNDFILE_H=1', '-DHAVE_SRC=1', '../src/list.c', '-c', '-o', 'src/list.c.2.o']

  • ERROR: media-sound/rove-9999 failed (compile phase):
  • build failed

with artfwo's help on irc, it looks like this (and several other related errors) stem the use of "-Werror" in the wscript's CFLAGS. once "-Werror" is deleted, the build proceeded as normal, albeit with several other warnings about uninitialized variables.

however, rove now completely fails to run! either it's erroring out (with "segmentation fault" on loading a set) because of its own issues, or libmonome is at fault. a bit of gdb and backtrace results in this:


Program received signal SIGSEGV, Segmentation fault.
0x00007ffff76c5300 in monome_open () from /usr/lib64/libmonome.so.1
(gdb) bt
#0 0x00007ffff76c5300 in monome_open () from /usr/lib64/libmonome.so.1
#1 0x00000000004063e3 in r_monome_init ()
#2 0x0000000000406c08 in main ()


wrl commented

man.

can you recompile with debug symbols (CFLAGS=-ggdb) and reproduce the
crash? it might be related to some of nedko's libmonome changes.

sorry for the slow reply, i'm busy as hell these days.

on Tue, Apr 02, 2013 at 07:50:24PM -0700, nightmorph wrote:

with artfwo's help on irc, it looks like this (and several other related errors) stem the use of "-Werror" in the wscript's CFLAGS. once "-Werror" is deleted, the build proceeded as normal, albeit with several other warnings about uninitialized variables.

however, rove now completely fails to run! either it's erroring out (with "segmentation fault" on loading a set) because of its own issues, or libmonome is at fault. a bit of gdb and backtrace results in this:


Program received signal SIGSEGV, Segmentation fault.
0x00007ffff76c5300 in monome_open () from /usr/lib64/libmonome.so.1
(gdb) bt
#0 0x00007ffff76c5300 in monome_open () from /usr/lib64/libmonome.so.1
#1 0x00000000004063e3 in r_monome_init ()
#2 0x0000000000406c08 in main ()



Reply to this email directly or view it on GitHub:
#8 (comment)

improved rove GDB output, with debugging symbols is below. note that i can't compile/install libmonome at the moment, because something changed in its codebase in the last 18 months such that it poisons the env ld.so cache -- maybe it doesn't use, or has a badly formatted, .pc file or something. so i'm stuck on my existing old libmonome for the foreseeable future. makes diagnosis a little harder, i know. my old unmodified libmonome fork should still work and not result in sandbox access violations at install/env-update time.


$ gdb /usr/bin/rove
GNU gdb (Gentoo 7.5.1 p2) 7.5.1
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
For bug reporting instructions, please see:
http://bugs.gentoo.org/...
Reading symbols from /usr/bin/rove...done.
(gdb) run ~/session/setlist.rv
Starting program: /usr/bin/rove ~/session/setlist.rv
warning: Could not load shared library symbols for linux-vdso.so.1.
Do you need "set solib-search-path" or "set sysroot"?
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".

hey, welcome to rove!

loading yr sessions:
loaded /home/user/session/setlist.rv
[New Thread 0x7ffff7fcc700 (LWP 6250)]
[New Thread 0x7ffff7f4b700 (LWP 6251)]

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff76c5300 in monome_open () from /usr/lib64/libmonome.so.1
(gdb) bt
#0 0x00007ffff76c5300 in monome_open () from /usr/lib64/libmonome.so.1
#1 0x0000000000406543 in r_monome_init () at ../src/monome.c:303
#2 0x0000000000406d68 in main (argc=2, argv=0x7fffffffddb8)
at ../src/rove.c:252

wrl commented

yeah the crash is happening in libmonome so without debug symbols
there's not much we can do.

libmonome doesn't have a pkgconfig file. how does this poison your ld.so
cache? (i'm not sure how it works on gentoo)

i'll have to dig up some docs on gentoo's env variables and .pc files and expected locations of stuff, but in the mean time, i manually compiled libmonome via ./waf and debug. here's what i got:


(gdb) run ~/session/setlist.rv
Starting program: /usr/bin/rove ~/session/setlist.rv
warning: Could not load shared library symbols for linux-vdso.so.1.
Do you need "set solib-search-path" or "set sysroot"?
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".

hey, welcome to rove!

loading yr sessions:
loaded /home/user/session/setlist.rv
[New Thread 0x7ffff7fcc700 (LWP 9859)]
[New Thread 0x7ffff7f4b700 (LWP 9860)]

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff76c54ba in monome_open (
dev=0x67bf50 "osc.udp://127.0.0.1:8080/rove") at ../src/libmonome.c:105
105 monome->proto = m->proto;
(gdb) bt
#0 0x00007ffff76c54ba in monome_open (
dev=0x67bf50 "osc.udp://127.0.0.1:8080/rove") at ../src/libmonome.c:105
#1 0x0000000000406543 in r_monome_init () at ../src/monome.c:303
#2 0x0000000000406d68 in main (argc=2, argv=0x7fffffffddb8)
at ../src/rove.c:252