Bug 132010 - Libgnomecanvas causes evolution,gdmgreeter to crash
Summary: Libgnomecanvas causes evolution,gdmgreeter to crash
Status: RESOLVED FIXED
Alias: None
Product: SUSE Linux 10.1
Classification: openSUSE
Component: GNOME (show other bugs)
Version: Alpha 2
Hardware: Other Other
: P5 - None : Major (vote)
Target Milestone: ---
Assignee: Richard Biener
QA Contact: E-mail List
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-11-02 15:00 UTC by Cameron Meadors
Modified: 2006-01-09 13:34 UTC (History)
1 user (show)

See Also:
Found By: Other
Services Priority:
Business Priority:
Blocker: ---
Marketing QA Status: ---
IT Deployment: ---


Attachments
backtrace of evolution crash (12.57 KB, application/octet-stream)
2005-11-02 15:01 UTC, Cameron Meadors
Details
evolutio n crash with debuginfo packages (8.83 KB, application/octet-stream)
2005-11-14 19:36 UTC, Cameron Meadors
Details
gdb disassemble output (25.38 KB, application/octet-stream)
2005-11-14 20:20 UTC, Cameron Meadors
Details
132010.c (4.33 KB, text/x-csrc)
2005-11-16 17:05 UTC, Federico Mena Quintero
Details
Disassembly, stack contents, registers, etc. (30.91 KB, text/plain)
2005-11-16 17:14 UTC, Federico Mena Quintero
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Cameron Meadors 2005-11-02 15:00:46 UTC
gdmgreeter and evolution both crash in gnome_canvas_item_request_update () from /opt/gnome/lib/libgnomecanvas-2.so.0 (2.12.0-5).  Going back to the 10.0 version of libgnomecanvas (2.12.0-2.1) stops the crashes.
Comment 1 Cameron Meadors 2005-11-02 15:01:34 UTC
Created attachment 56258 [details]
backtrace of evolution crash
Comment 2 JP Rosevear 2005-11-02 15:25:13 UTC
The only relevant difference appears to be federico's interpolation patch.
Comment 3 Federico Mena Quintero 2005-11-05 02:54:34 UTC
How weird - the stack trace doesn't run into the interpolation code path at all.

How do you reproduce this?  I have that patched libgnomecanvas and neither gdmgreeter nor evolution crash for me.
Comment 4 Cameron Meadors 2005-11-09 16:54:20 UTC
I am using the latest and greatest from EDGE (STABLE).  This is still a problem.  I have to used the SL 10.0 packages.

Reproduction is just start Evolution or GDM and they crash on startup.
Comment 5 Federico Mena Quintero 2005-11-10 20:29:17 UTC
I can't reproduce it with evolution.

However, it gives me a certain critical warning which is bad:

(evolution:21551): Gdk-CRITICAL **: gdk_gc_set_foreground: assertion `GDK_IS_GC (gc)' failed

It appears a number of times when I activate the calendar, and it always happens here:

#0  0x41223134 in g_log () from /opt/gnome/lib/libglib-2.0.so.0
#1  0x412232bc in g_return_if_fail_warning () from /opt/gnome/lib/libglib-2.0.so.0
#2  0x41069b72 in gdk_gc_set_foreground () from /opt/gnome/lib/libgdk-x11-2.0.so.0
#3  0x400646d3 in e_url_entry_get_entry () from /opt/gnome/lib/evolution/2.4/libemiscwidgets.so.0
#4  0x411c60eb in g_cclosure_marshal_VOID__OBJECT () from /opt/gnome/lib/libgobject-2.0.so.0
#5  0x411b8637 in g_cclosure_new_swap () from /opt/gnome/lib/libgobject-2.0.so.0
#6  0x411b8d19 in g_closure_invoke () from /opt/gnome/lib/libgobject-2.0.so.0
#7  0x411c89a7 in g_signal_stop_emission () from /opt/gnome/lib/libgobject-2.0.so.0
#8  0x411c9e80 in g_signal_emit_valist () from /opt/gnome/lib/libgobject-2.0.so.0
#9  0x411ca1f5 in g_signal_emit () from /opt/gnome/lib/libgobject-2.0.so.0
#10 0x40067deb in e_canvas_item_grab_focus () from /opt/gnome/lib/evolution/2.4/libemiscwidgets.so.0
Comment 6 Federico Mena Quintero 2005-11-11 00:52:38 UTC
Hmm, this is weird:

1. I got the new libgnomecanvas package, built it with debug info.  Evolution didn't crash.

2. My gdmgreeter from the version of GDM that came in Suse 10 did not crash.

3. I did "rug install gdm" for the latest gdm.  It crashed when I ran it.

4. I downloaded the sources, patches and specfile for that latest GDM, and built it with debug info and no optimizations.

5. gdmgreeter did not crash.

I smell something fishy with that new gdm package.  I'll rebuild it with optimizations to see if it crashes that way.
Comment 7 Cameron Meadors 2005-11-14 19:36:46 UTC
Created attachment 57297 [details]
evolutio n crash with debuginfo packages

this is on a SUSE LINUX 10.1 alpha 3 system.
Comment 8 Cameron Meadors 2005-11-14 20:20:49 UTC
Created attachment 57300 [details]
gdb disassemble output
Comment 9 JP Rosevear 2005-11-16 04:43:00 UTC
Further note, packages with the post 10.0 patch built against plus and installed on stable work.

Two guess:
1) libgnomecanvas is doing something evil in  that finally got exposed

2) gcc problem

I looked for build warnings in libgnomecanvas, but saw none.
Comment 10 JP Rosevear 2005-11-16 04:59:09 UTC
Next data point, build without binlinear patch (only patch since 10.0) built against stable has the same problem.
Comment 11 Richard Biener 2005-11-16 10:01:33 UTC
Is this bug maybe exposed somewhere without the threading stuff?  That would be a lot easier to debug.  Also, does gdmgreeter crash at startup?  Can you give some more information on how to reproduce the crash?
Comment 12 Richard Biener 2005-11-16 10:16:12 UTC
Btw, which architecture is this on?
Comment 13 Richard Biener 2005-11-16 10:31:56 UTC
It would be really nice if you could create a little program which just creates
the arguments to the segfaulting uta_union_clip as they are and call the function.
This should reproduce the problem if this is a gcc problem.  From a quick look at gcc debugging output you might want to try -fno-ivopts on gnome-canvas.c and see if that fixes the problem.

If you can create that small testcase I'll take over debugging.

Thanks,
Richard.
Comment 14 JP Rosevear 2005-11-16 14:26:56 UTC
SMP i386 here, I believe cameron is i386 single processor.

I built the package with -fno-ivopts and it made no difference.
Comment 15 Federico Mena Quintero 2005-11-16 16:44:02 UTC
Did the compiler change between STABLE and PLUS?  It wouldn't be the first time that microtile-related code has exposed a compiler bug :)
Comment 16 Federico Mena Quintero 2005-11-16 17:05:00 UTC
Created attachment 57545 [details]
132010.c

This little program has the function that crashes (uta_union_clip).  It runs the function with the parameters that get passed in the real crash.

I don't have the actual *contents* of the microtile array from the crash, just its size, but I hope that's enough for now.
Comment 17 Federico Mena Quintero 2005-11-16 17:14:13 UTC
Created attachment 57546 [details]
Disassembly, stack contents, registers, etc.

This is the irc log I had with cmeadors; he was running gdb on the crashed program.

The crash is in uta_union_clip+356:

    mov 0x4(%esi),%edx

There, %esi = 0.

This gets set in uta_union_clip+336:
  mov 0xffffffb0(%ebp),%esi

Look at the stack dump near the bottom of the file; the line marked with asterisks has four 0 bytes at the beginning.

I *think* those bytes get set at uta_union_clip+25, near the beginning of the function:
  mov %edx,0xffffffb0(%ebp)

But I couldn't grok to what %edx corresponded there.

I guess it would be good to look at the disassembly of the same function compiled for PLUS.
Comment 18 Richard Biener 2005-11-16 17:40:04 UTC
The 132010.c testcase compiles fine for me and reproduces the bug with -O2 -fno-inline.  I'll investigate.
Comment 19 Richard Biener 2005-11-16 18:00:56 UTC
It's a compiler bug.  You can work around it using -floop-optimize2 (no guarantee that this won't break something else, though) or disabling RTL loop optimization with -fno-loop-optimize.
Comment 20 Richard Biener 2005-11-16 18:01:34 UTC
This defect is tracked by gcc bugzilla
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24899
Comment 21 JP Rosevear 2005-11-16 18:50:06 UTC
Worked around with -fno-loop-optimize for now, Richard please assign back to us to pull the compiler flag from autobuild when we have a fixed gcc
Comment 22 Federico Mena Quintero 2005-11-16 18:53:42 UTC
Wow, thanks a lot, Richard :)  I hope the gcc guys get to it soon.
Comment 23 Richard Biener 2006-01-09 13:34:18 UTC
This should be fixed now in STABLE.