Eclipse crashes using content assist with libcairo2 1.8.10
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
XULRunner |
Fix Released
|
Medium
|
|||
eclipse (Ubuntu) |
Triaged
|
Undecided
|
Unassigned | ||
Lucid |
Won't Fix
|
Undecided
|
Unassigned | ||
xulrunner-1.9.1 (Ubuntu) |
Invalid
|
Low
|
Unassigned | ||
Lucid |
Invalid
|
Undecided
|
Unassigned | ||
xulrunner-1.9.2 (Ubuntu) |
Fix Released
|
High
|
Unassigned | ||
Lucid |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
Binary package hint: xulrunner
The recent upgrade to libcairo2-
In the case of Eclipse, this causes a crash when the extra documentation popup disappears from the right of the content-assist popup menu (i.e. when an item is selected and the menu is no longer needed).
If I set the environment variable GRE_HOME to some nonsense path, Eclipse works fine (it uses a simpler rendering technique for the documentation window).
Installing xulrunner 1.9.2 (I used the mozilla-daily ppa) fixes the problem. Since several packages depend on xulrunner (yelp, couchdb-bin, eclipse-platform, miro, libgjs0, gnome-shell, etc) it would be advisable to upgrade xulrunner to prevent the bug from appearing in the LTS.
ProblemType: Bug
Architecture: amd64
Date: Thu Mar 4 05:26:48 2010
DistroRelease: Ubuntu 10.04
InstallationMedia: Ubuntu 9.10 "Karmic Koala" - Release Candidate amd64 (20091020.3)
NonfreeKernelMo
Package: xulrunner (not installed)
ProcEnviron:
PATH=(custom, user)
LANG=en_US.utf8
SHELL=/bin/bash
ProcVersionSign
SourcePackage: xulrunner
Uname: Linux 2.6.32-15-generic x86_64
summary: |
- Eclipse crashes on content assist + Eclipse crashes with xulrunner-1.9.1 |
summary: |
- Eclipse crashes with xulrunner-1.9.1 + Eclipse crashes using content assist |
summary: |
- Eclipse crashes using content assist + Eclipse crashes using content assist with libcairo2 1.8.10 |
Changed in xulrunner: | |
status: | Unknown → Fix Released |
Changed in xulrunner: | |
importance: | Unknown → Medium |
The cairo surface being destroyed is using the window for the drawable, and is
releasing the dst_picture
http:// hg.mozilla. org/mozilla- central/ annotate/ 4046f3843bdb/ gfx/cairo/ cairo/src/ cairo-xlib- surface. c#l296
(gdb) f 6 xlib_surface_ finish ( surface= 0x7f8f8ee56400) moz/dev/ gfx/cairo/ cairo/src/ cairo-xlib- surface. c:341 TYPE_XLIB, COLOR, ref_count = {ref_count = 0}, SUCCESS, finished = 0, user_data = {size = 1, transform = {xx = 1, yx = 0, xy = 0, yy = 1, x0 = 0, y0 = 0}, transform_ inverse = {xx = 1, yx = 0, xy = 0, yy = 1, x0 = -0, resolution = 300, y_fallback_ resolution = 300, xlib_surface_ detach_ display> }, NEAREST, repeat = 0,
#6 0x00007f8fc6d8a2c2 in _cairo_
abstract_
at /home/karl/
(gdb) p *surface
$376 = {base = {backend = 0x7f8fc70987e0, type = CAIRO_SURFACE_
content = CAIRO_CONTENT_
status = CAIRO_STATUS_
num_elements = 1, element_size = 24, elements = 0x7f8f8eee7438,
is_snapshot = 0}, mime_data = {size = 0, num_elements = 0,
element_size = 24, elements = 0x0, is_snapshot = 0},
device_
device_
y0 = -0}, x_resolution = 72, y_resolution = 72,
x_fallback_
clip = 0x7f8f8f0d9260, next_clip_serial = 1, current_clip_serial = 1,
is_snapshot = 0, has_font_options = 0, font_options = {
antialias = 2779096485, subpixel_order = 2779096485,
hint_style = 2779096485, hint_metrics = 2779096485}},
dpy = 0x7f8fcd151000, display = 0x7f8fac641c10,
screen_info = 0x7f8fac6163d0, close_display_hook = {prev = 0x7f8f9bfdb520,
next = 0x7f8f8ed5cd20,
func = 0x7f8fc6d8f5f2 <_cairo_
gc = 0x7f8f8ef0ea60, drawable = 44044608, screen = 0x7f8fcd139180,
owns_pixmap = 0, visual = 0x7f8fcd11f470, use_pixmap = 0, render_major = 0,
render_minor = 10, buggy_repeat = 0, width = 1069, height = 619,
depth = 24, dst_picture = 44045647, src_picture = 0, clip_dirty = 0,
have_clip_rects = 0, gc_has_clip_rects = 0, embedded_clip_rects = {{x = 0,
y = 0, width = 1069, height = 619}, {x = -23131, y = -23131,
width = 42405, height = 42405}, {x = -23131, y = -23131, width = 42405,
height = 42405}, {x = -23131, y = -23131, width = 42405,
height = 42405}, {x = -23131, y = -23131, width = 42405,
height = 42405}, {x = -23131, y = -23131, width = 42405,
height = 42405}, {x = -23131, y = -23131, width = 42405,
height = 42405}, {x = -23131, y = -23131, width = 42405,
height = 42405}}, clip_rects = 0x7f8f8ee5659c, num_clip_rects = 0,
xrender_format = 0x7f8fcd0fc940, filter = CAIRO_FILTER_
xtransform = {matrix = {{65536, 0, 0}, {0, 65536, 0}, {0, 0, 65536}}},
a_mask = 0, r_mask = 16711680, g_mask = 65280, b_mask = 255}
The drawable of that surface is the Window of the nsIWidget being destroyed
but that Window has already been destroyed, probably when a parent nsIWidget
was destroyed:
http:// hg.mozilla. org/mozilla- central/ annotate/ 4046f3843bdb/ widget/ src/gtk2/ nsWindow. cpp#l760
(gdb) f 13 d2ba0) moz/dev/ widget/ src/gtk2/ nsWindow. cpp:790 ct*)mGdkWindow
#13 0x00007f8fc6311441 in nsWindow::Destroy (this=0x7f8fa9c
at /home/karl/
(gdb) p *(GdkWindowObje
$386 = {parent_instance = {parent_instance = {g_type_instance = {
g_cla...