! Please note that this is a snapshot of our old Bugzilla server, which is read only since May 29, 2020. Please go to gitlab.xfce.org for our new server !
xfce4-settings-helper segfaults when running two separate x screens
Status:
RESOLVED: DUPLICATE
Product:
Xfce4-settings
Component:
Settings Helper

Comments

Description Geralt 2009-01-25 00:45:19 CET
When running Xorg configured to use two separate X screens xfce4-settings-helper segfaults.

Here's the output of "gdb xfce4-settings-helper"

$ gdb ./xfce4-settings-heer 
GNU gdb 6.8
Copyright (C) 2008 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 "i686-pc-linux-gnu"...
(gdb) run -d
Starting program: /home/sascha/xfce4-settings-4.5.93/xfce4-settings-helper/xfce4-settings-helper -d
[Thread debugging using libthread_db enabled]
[New Thread 0xb73b6910 (LWP 32297)]
DBG[keyboard-shortcuts.c:252] _xfce_keyboard_shortcuts_helper_load_shortcut(): shortcut = <Super>h
DBG[keyboard-shortcuts.c:252] _xfce_keyboard_shortcuts_helper_load_shortcut(): shortcut = <Super>s
DBG[keyboard-shortcuts.c:252] _xfce_keyboard_shortcuts_helper_load_shortcut(): shortcut = <Control><Alt>Delete
DBG[keyboard-shortcuts.c:252] _xfce_keyboard_shortcuts_helper_load_shortcut(): shortcut = XF86AudioMute
DBG[keyboard-shortcuts.c:252] _xfce_keyboard_shortcuts_helper_load_shortcut(): shortcut = XF86AudioLowerVolume
DBG[keyboard-shortcuts.c:252] _xfce_keyboard_shortcuts_helper_load_shortcut(): shortcut = <Alt>F2
DBG[keyboard-shortcuts.c:252] _xfce_keyboard_shortcuts_helper_load_shortcut(): shortcut = XF86AudioRaiseVolume

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb73b6910 (LWP 32297)]
0xb77b257b in strlen () from /lib/libc.so.6
(gdb) bt
#0  0xb77b257b in strlen () from /lib/libc.so.6
#1  0x0804e7d8 in xfce_workspaces_helper_set_names_prop (
    helper=<value optimized out>, screen=0x9afa2d8, names=0x9b112c8)
    at workspaces.c:162
#2  0x0804ebbf in xfce_workspaces_helper_init (helper=0x9ae1350)
    at workspaces.c:121
#3  0xb796b5d0 in g_type_create_instance () from /usr/lib/libgobject-2.0.so.0
#4  0x00000001 in ?? ()
#5  0x00000000 in ?? ()



The output of "valgrind --log-file=valgrind.log --num-callers=30 ./xfce4-settings-helper -d"
==32300== Memcheck, a memory error detector.
==32300== Copyright (C) 2002-2008, and GNU GPL'd, by Julian Seward et al.
==32300== Using LibVEX rev 1878, a library for dynamic binary translation.
==32300== Copyright (C) 2004-2008, and GNU GPL'd, by OpenWorks LLP.
==32300== Using valgrind-3.4.0, a dynamic binary instrumentation framework.
==32300== Copyright (C) 2000-2008, and GNU GPL'd, by Julian Seward et al.
==32300== For more details, rerun with: -v
==32300== 
==32300== My PID = 32300, parent PID = 17168.  Prog and args are:
==32300==    ./xfce4-settings-helper
==32300==    -d
==32300== 
==32300== Syscall param write(buf) points to uninitialised byte(s)
==32300==    at 0x4000982: (within /lib/ld-2.6.1.so)
==32300==    by 0x44E7F52: __write_nocancel (in /lib/libpthread-2.6.1.so)
==32300==    by 0x4B00B10: (within /usr/lib/libICE.so.6.3.0)
==32300==  Address 0x4c28b5c is 12 bytes inside a block of size 1,024 alloc'd
==32300==    at 0x4022222: calloc (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==32300==    by 0x4AFCD44: IceOpenConnection (in /usr/lib/libICE.so.6.3.0)
==32300== 
==32300== Invalid read of size 4
==32300==    at 0x4669416: g_strv_length (in /usr/lib/libglib-2.0.so.0.1600.5)
==32300==    by 0x46055CF: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1600.5)
==32300==  Address 0x4d1ae70 is 0 bytes inside a block of size 20 free'd
==32300==    at 0x4022B2F: free (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==32300==    by 0x4653BE0: g_free (in /usr/lib/libglib-2.0.so.0.1600.5)
==32300==    by 0x46055CF: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1600.5)
==32300== 
==32300== Invalid read of size 4
==32300==    at 0x4669421: g_strv_length (in /usr/lib/libglib-2.0.so.0.1600.5)
==32300==    by 0x46055CF: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1600.5)
==32300==  Address 0x4d1ae74 is 4 bytes inside a block of size 20 free'd
==32300==    at 0x4022B2F: free (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==32300==    by 0x4653BE0: g_free (in /usr/lib/libglib-2.0.so.0.1600.5)
==32300==    by 0x46055CF: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1600.5)
==32300== 
==32300== Invalid write of size 4
==32300==    at 0x804EB99: xfce_workspaces_helper_init (workspaces.c:118)
==32300==    by 0x46055CF: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1600.5)
==32300==  Address 0x4d1ae80 is 16 bytes inside a block of size 20 free'd
==32300==    at 0x4022B2F: free (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==32300==    by 0x4653BE0: g_free (in /usr/lib/libglib-2.0.so.0.1600.5)
==32300==    by 0x46055CF: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1600.5)
==32300== 
==32300== Invalid read of size 4
==32300==    at 0x804E7BA: xfce_workspaces_helper_set_names_prop (workspaces.c:161)
==32300==    by 0x804EBBE: xfce_workspaces_helper_init (workspaces.c:121)
==32300==    by 0x46055CF: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1600.5)
==32300==  Address 0x4d1ae70 is 0 bytes inside a block of size 20 free'd
==32300==    at 0x4022B2F: free (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==32300==    by 0x4653BE0: g_free (in /usr/lib/libglib-2.0.so.0.1600.5)
==32300==    by 0x46055CF: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1600.5)
==32300== 
==32300== Invalid read of size 1
==32300==    at 0x4023D9B: strlen (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==32300==    by 0x804E7D7: xfce_workspaces_helper_set_names_prop (workspaces.c:162)
==32300==    by 0x804EBBE: xfce_workspaces_helper_init (workspaces.c:121)
==32300==    by 0x46055CF: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1600.5)
==32300==  Address 0x4d1aeb8 is 0 bytes inside a block of size 12 free'd
==32300==    at 0x4022B2F: free (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==32300==    by 0x4653BE0: g_free (in /usr/lib/libglib-2.0.so.0.1600.5)
==32300==    by 0x46055CF: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1600.5)
==32300== 
==32300== Invalid read of size 1
==32300==    at 0x4023DA5: strlen (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==32300==    by 0x804E7D7: xfce_workspaces_helper_set_names_prop (workspaces.c:162)
==32300==    by 0x804EBBE: xfce_workspaces_helper_init (workspaces.c:121)
==32300==    by 0x46055CF: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1600.5)
==32300==  Address 0x4d1aeb9 is 1 bytes inside a block of size 12 free'd
==32300==    at 0x4022B2F: free (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==32300==    by 0x4653BE0: g_free (in /usr/lib/libglib-2.0.so.0.1600.5)
==32300==    by 0x46055CF: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1600.5)
==32300== 
==32300== Invalid read of size 1
==32300==    at 0x4024F22: memcpy (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==32300==    by 0x466CB55: g_string_insert_len (in /usr/lib/libglib-2.0.so.0.1600.5)
==32300==  Address 0x4d1aec3 is 11 bytes inside a block of size 12 free'd
==32300==    at 0x4022B2F: free (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==32300==    by 0x4653BE0: g_free (in /usr/lib/libglib-2.0.so.0.1600.5)
==32300==    by 0x46055CF: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1600.5)
==32300== 
==32300== Invalid read of size 1
==32300==    at 0x4024F27: memcpy (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==32300==    by 0x466CB55: g_string_insert_len (in /usr/lib/libglib-2.0.so.0.1600.5)
==32300==  Address 0x4d1aec2 is 10 bytes inside a block of size 12 free'd
==32300==    at 0x4022B2F: free (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==32300==    by 0x4653BE0: g_free (in /usr/lib/libglib-2.0.so.0.1600.5)
==32300==    by 0x46055CF: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1600.5)
==32300== 
==32300== Invalid read of size 1
==32300==    at 0x4024F2E: memcpy (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==32300==    by 0x466CB55: g_string_insert_len (in /usr/lib/libglib-2.0.so.0.1600.5)
==32300==  Address 0x4d1aec1 is 9 bytes inside a block of size 12 free'd
==32300==    at 0x4022B2F: free (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==32300==    by 0x4653BE0: g_free (in /usr/lib/libglib-2.0.so.0.1600.5)
==32300==    by 0x46055CF: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1600.5)
==32300== 
==32300== Invalid read of size 1
==32300==    at 0x4024F35: memcpy (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==32300==    by 0x466CB55: g_string_insert_len (in /usr/lib/libglib-2.0.so.0.1600.5)
==32300==  Address 0x4d1aec0 is 8 bytes inside a block of size 12 free'd
==32300==    at 0x4022B2F: free (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==32300==    by 0x4653BE0: g_free (in /usr/lib/libglib-2.0.so.0.1600.5)
==32300==    by 0x46055CF: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1600.5)
==32300== 
==32300== Invalid read of size 4
==32300==    at 0x804E7E9: xfce_workspaces_helper_set_names_prop (workspaces.c:161)
==32300==    by 0x804EBBE: xfce_workspaces_helper_init (workspaces.c:121)
==32300==    by 0x46055CF: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1600.5)
==32300==  Address 0x4d1ae74 is 4 bytes inside a block of size 20 free'd
==32300==    at 0x4022B2F: free (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==32300==    by 0x4653BE0: g_free (in /usr/lib/libglib-2.0.so.0.1600.5)
==32300==    by 0x46055CF: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1600.5)
==32300== 
==32300== Invalid read of size 4
==32300==    at 0x4669C99: g_strfreev (in /usr/lib/libglib-2.0.so.0.1600.5)
==32300==    by 0x46055CF: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1600.5)
==32300==  Address 0x4d1ae70 is 0 bytes inside a block of size 20 free'd
==32300==    at 0x4022B2F: free (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==32300==    by 0x4653BE0: g_free (in /usr/lib/libglib-2.0.so.0.1600.5)
==32300==    by 0x46055CF: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1600.5)
==32300== 
==32300== Invalid free() / delete / delete[]
==32300==    at 0x4022B2F: free (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==32300==    by 0x4653BE0: g_free (in /usr/lib/libglib-2.0.so.0.1600.5)
==32300==    by 0x46055CF: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1600.5)
==32300==  Address 0x4d1aeb8 is 0 bytes inside a block of size 12 free'd
==32300==    at 0x4022B2F: free (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==32300==    by 0x4653BE0: g_free (in /usr/lib/libglib-2.0.so.0.1600.5)
==32300==    by 0x46055CF: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1600.5)
==32300== 
==32300== Invalid read of size 4
==32300==    at 0x4669CA9: g_strfreev (in /usr/lib/libglib-2.0.so.0.1600.5)
==32300==    by 0x46055CF: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1600.5)
==32300==  Address 0x4d1ae74 is 4 bytes inside a block of size 20 free'd
==32300==    at 0x4022B2F: free (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==32300==    by 0x4653BE0: g_free (in /usr/lib/libglib-2.0.so.0.1600.5)
==32300==    by 0x46055CF: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1600.5)
==32300== 
==32300== ERROR SUMMARY: 125 errors from 15 contexts (suppressed: 9 from 2)
==32300== malloc/free: in use at exit: 268,602 bytes in 2,696 blocks.
==32300== malloc/free: 16,486 allocs, 13,795 frees, 1,375,553 bytes allocated.
==32300== For counts of detected errors, rerun with: -v
==32300== Use --track-origins=yes to see where uninitialised values come from
==32300== searching for pointers to 2,696 not-freed blocks.
==32300== checked 572,264 bytes.
==32300== 
==32300== LEAK SUMMARY:
==32300==    definitely lost: 164 bytes in 12 blocks.
==32300==      possibly lost: 35,608 bytes in 53 blocks.
==32300==    still reachable: 232,830 bytes in 2,631 blocks.
==32300==         suppressed: 0 bytes in 0 blocks.
==32300== Rerun with --leak-check=full to see details of leaked memory.






And in the attachement is a core dump.
Comment 1 Nick Schermer editbugs 2009-01-26 08:14:26 CET

*** This bug has been marked as a duplicate of bug 4853 ***

Bug #4851

Reported by:
Geralt
Reported on: 2009-01-25
Last modified on: 2009-07-14

People

Assignee:
Stephan Arts
CC List:
2 users

Version

Attachments

core dump of running "./xfce4-settings-helper -d" ( deleted )
2009-01-25 00:45 CET , Geralt
no flags

Additional information