On 27 Jan, Lars Clausen wrote:
>> Very strange. I'm sorry i don't have time to check it out further. Try
>> running it in gdb and get a stack-trace.
>
> I did. I managed to get something at one point yesterday, which showed
> generally screwed-up values. I can reproduce it pretty easily now, but the
> stack track is all ?? functions in glib, gtk and gdk.
>
> It can be reproduced by making two lines, applying another line style for
> one of them, and then double-clicking on one, then the other, until it
> crashes. Doesn't seem to be a timing problem.
Ok, here's a stack trace i got. You need to run gdb app/dia to get rid
of the ?? it seems.
It seems like a memory corruption of some kind. gdk_window_get_parent (window) returns
0xa1!?
Anyone got purify and wants to take on this? Or read the source :) I'll
do it some day if i got the time. We'll better fix this before
changing all objects to only have one PropertiesDialog.
-------------- stack trace ------------------------
Program received signal SIGSEGV, Segmentation fault.
0x40147cce in gdk_window_get_size (window=0xa1, width=0xbffff758, height=0xbffff754)
at gdkwindow.c:1343
1343 *width = window_private->width;
(gdb) bt
#0 0x40147cce in gdk_window_get_size (window=0xa1, width=0xbffff758,
height=0xbffff754) at gdkwindow.c:1343
#1 0x400f41ff in gtk_widget_clip_rect (widget=0x80cf248, window=0x80d47c8,
rect=0x80ba844, x_offset=0x0, y_offset=0x0) at gtkwidget.c:1970
#2 0x400f44c5 in gtk_widget_idle_draw (cb_data=0x0) at gtkwidget.c:2062
#3 0x401693d5 in g_idle_dispatch (source_data=0x400f436c, current_time=0xbffff824,
user_data=0x0) at gmain.c:1203
#4 0x40168664 in g_main_dispatch (current_time=0xbffff824) at gmain.c:640
#5 0x40168a81 in g_main_iterate (block=1, dispatch=1) at gmain.c:829
#6 0x40168c01 in g_main_run (loop=0x80b7ef8) at gmain.c:887
#7 0x40097b57 in gtk_main () at gtkmain.c:456
#8 0x805b581 in main (argc=1, argv=0xbffff894) at main.c:30
(gdb) l
1338 g_return_if_fail (window != NULL);
1339
1340 window_private = (GdkWindowPrivate*) window;
1341
1342 if (width)
1343 *width = window_private->width;
1344 if (height)
1345 *height = window_private->height;
1346 }
1347
(gdb) up
#1 0x400f41ff in gtk_widget_clip_rect (widget=0x80cf248, window=0x80d47c8,
rect=0x80ba844, x_offset=0x0, y_offset=0x0) at gtkwidget.c:1970
1970 gdk_window_get_size (window, &width, &height);
(gdb) l
1965
1966 window = gdk_window_get_parent (window);
1967 if (!window)
1968 return FALSE;
1969
1970 gdk_window_get_size (window, &width, &height);
1971
1972 if (rect->x < 0)
1973 {
1974 rect->width = (width > -rect->x) ? width + rect->x : 0;
(gdb) p window
$1 = (GdkWindow *) 0xa1
/ Alex