Debugging this, we see the addresses of the source ad destination path buffers passed gets trashed, here 0x62cc:
Program received signal SIGABRT, Aborted. 0x00007ffff7144a75 in *__GI_raise (sig=<value optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 64 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory. in ../nptl/sysdeps/unix/sysv/linux/raise.c (gdb) where #0 0x00007ffff7144a75 in *__GI_raise (sig=<value optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 #1 0x00007ffff71485c0 in *__GI_abort () at abort.c:92 #2 0x00007ffff717e4fb in __libc_message (do_abort=<value optimized out>, fmt=<value optimized out>) at ../sysdeps/unix/sysv/linux/libc_fatal.c:189 #3 0x00007ffff72101e7 in *__GI___fortify_fail (msg=0x7ffff725880d "buffer overflow detected") at fortify_fail.c:32 #4 0x00007ffff720f0a0 in *__GI___chk_fail () at chk_fail.c:29 #5 0x00007ffff720f6fb in __realpath_chk (buf=0x62cc <Address 0x62cc out of bounds>, resolved=0x62cc <Address 0x62cc out of bounds>, resolvedlen=6) at realpath_chk.c:30 #6 0x0000000000401687 in realpath (argc=<value optimized out>, argv=<value optimized out>) at /usr/include/bits/stdlib.h:46 #7 main (argc=<value optimized out>, argv=<value optimized out>) at hal-disable-polling.c:194 Further more, building with optimisation disabled, the crash is not experienced: $ apt-get source hal $ cd hal-* $ debuild -rfakeroot -us -uc $ cd tools $ gcc -DHAVE_CONFIG_H -I. -I.. -DPACKAGE_LIBEXEC_DIR=\""/usr/lib/hal"\" -DPACKAGE_SYSCONF_DIR=\""/etc"\" -DPACKAGE_DATA_DIR=\""/usr/share"\" -DPACKAGE_BIN_DIR=\""/usr/bin"\" -DPACKAGE_LOCALSTATEDIR=\""/var"\" -DPACKAGE_SCRIPT_DIR=\""/usr/lib/hal/scripts"\" -DPACKAGE_LOCALE_DIR=\""/usr/share/locale"\" -I.. -I../libhal -I../libhal-storage -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -c hal-disable-polling.c -O0 $ gcc -Wl,--as-needed -Wl,-Bsymbolic-functions -o hal-disable-polling hal-disable-polling.o -pthread -L/lib -ldbus-glib-1 /usr/lib/libgobject-2.0.so /usr/lib/libgthread-2.0.so /usr/lib/libglib-2.0.so -ldbus-1 -lpthread -lrt ../libhal/.libs/libhal.so -pthread $ sudo ./hal-disable-polling --device /dev/foo Cannot find device /dev/foo. $ gcc -DHAVE_CONFIG_H -I. -I.. -DPACKAGE_LIBEXEC_DIR=\""/usr/lib/hal"\" -DPACKAGE_SYSCONF_DIR=\""/etc"\" -DPACKAGE_DATA_DIR=\""/usr/share"\" -DPACKAGE_BIN_DIR=\""/usr/bin"\" -DPACKAGE_LOCALSTATEDIR=\""/var"\" -DPACKAGE_SCRIPT_DIR=\""/usr/lib/hal/scripts"\" -DPACKAGE_LOCALE_DIR=\""/usr/share/locale"\" -I.. -I../libhal -I../libhal-storage -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -c hal-disable-polling.c -O1 $ gcc -Wl,--as-needed -Wl,-Bsymbolic-functions -o hal-disable-polling hal-disable-polling.o -pthread -L/lib -ldbus-glib-1 /usr/lib/libgobject-2.0.so /usr/lib/libgthread-2.0.so /usr/lib/libglib-2.0.so -ldbus-1 -lpthread -lrt ../libhal/.libs/libhal.so -pthread $ sudo ./hal-disable-polling --device /dev/foo *** buffer overflow detected ***: ./hal-disable-polling terminated -- hal-disable-polling crash: buffer overflow detected https://bugs.launchpad.net/bugs/530569 You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs