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

Reply via email to