The function that appears to be miscompiled and which is called by the test is in telepathy-glib/debug.c
Building this file alone with -O0 does not lead to crash. Same result if the debug_flag_to_domain() function which is called here, and which is static to the debug.c file is either made non-static, or flagged with __attribute__((noinline)). In both of these cases this will not be inlined and code generated is correct. void _tp_log (GLogLevelFlags level, TpDebugFlags flag, const gchar *format, ...) { if ((flag & flags) || level > G_LOG_LEVEL_DEBUG) { va_list args; va_start (args, format); g_logv (debug_flag_to_domain (flag), level, format, args); va_end (args); } } The function has 3 arguments, but r2 is overwritten by r0 without being saved first. So format <= level on the second line of the disassembled code 000000d8 <_tp_log>: d8: f240 0300 movw r3, #0 dc: 4602 mov r2, r0 // THIS APPEARS TO OVERWRITE THE FORMAT ARGUMENT WITH THE LEVEL ARGUMENT de: f2c0 0300 movt r3, #0 e2: 681b ldr r3, [r3, #0] e4: 4219 tst r1, r3 e6: bf0c ite eq e8: 2300 moveq r3, #0 ea: 2301 movne r3, #1 ec: 2880 cmp r0, #128 ; 0x80 ee: bfc8 it gt f0: f043 0301 orrgt.w r3, r3, #1 gdb backtrace of the crash confirms format is passed down to callees with an invalid value (0x80 = G_LOG_LEVEL_DEBUG) Program received signal SIGSEGV, Segmentation fault. __strchrnul (s=<value optimized out>, c_in=<value optimized out>) at strchrnul.c:122 122 strchrnul.c: No such file or directory. in strchrnul.c (gdb) bt #0 __strchrnul (s=<value optimized out>, c_in=<value optimized out>) at strchrnul.c:122 #1 0x40366dd2 in __find_specmb (s=0xbec1d098, format=0x80 <Address 0x80 out of bounds>, ap=...) at printf-parse.h:99 #2 _IO_vfprintf_internal (s=0xbec1d098, format=0x80 <Address 0x80 out of bounds>, ap=...) at vfprintf.c:1325 #3 0x403d5b56 in __vasprintf_chk (result_ptr=0xbec1d174, flags=1, format=0x80 <Address 0x80 out of bounds>, args=...) at vasprintf_chk.c:68 #4 0x402e3a1a in vasprintf (string=0xbec1d174, format=0x80 <Address 0x80 out of bounds>, args=<value optimized out>) at /usr/include/bits/stdio2.h:199 #5 g_vasprintf (string=0xbec1d174, format=0x80 <Address 0x80 out of bounds>, args=<value optimized out>) at /build/buildd/glib2.0-2.28.4/./glib/gprintf.c:318 #6 0x402c9eca in g_strdup_vprintf (format=<value optimized out>, args=<value optimized out>) at /build/buildd/glib2.0-2.28.4/./glib/gstrfuncs.c:255 #7 0x402ba1f8 in g_logv (log_domain=0x8da0 "tp-glib/accounts", log_level=G_LOG_LEVEL_DEBUG, format=0x80 <Address 0x80 out of bounds>, args1=...) at /build/buildd/glib2.0-2.28.4/./glib/gmessages.c:524 #8 0x00008a2c in _tp_log (level=-1094593012, flag=37, format=0x80 <Address 0x80 out of bounds>) at debug.c:311 #9 0x000088fc in main (argc=<value optimized out>, argv=<value optimized out>) at debug-domain.c:17 -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/736081 Title: [armel] telepathy-glib segfaults in selftests during build -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs