After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 733623 - gnome-shell/cogl crash when clicking on "Activities"
gnome-shell/cogl crash when clicking on "Activities"
Status: RESOLVED FIXED
Product: gnome-shell
Classification: Core
Component: general
unspecified
Other Linux
: Normal critical
: ---
Assigned To: gnome-shell-maint
gnome-shell-maint
Depends on:
Blocks:
 
 
Reported: 2014-07-23 18:22 UTC by André Klapper
Modified: 2014-08-02 11:06 UTC
See Also:
GNOME target: ---
GNOME version: 3.9/3.10


Attachments
lightbox: Do not assume GLSL is available (1.15 KB, patch)
2014-07-24 13:46 UTC, drago01
committed Details | Review
background: Do not assume GLSL is available (934 bytes, patch)
2014-07-24 13:46 UTC, drago01
needs-work Details | Review
st-scroll-view-fade: Refuse to work without GLSL (1.29 KB, patch)
2014-07-24 13:52 UTC, drago01
accepted-commit_now Details | Review
background: Do not assume GLSL is available (2.21 KB, patch)
2014-07-24 14:39 UTC, drago01
committed Details | Review
st-scroll-view-fade: Refuse to work without GLSL (1.09 KB, patch)
2014-07-24 14:40 UTC, drago01
committed Details | Review

Description André Klapper 2014-07-23 18:22:41 UTC
1. Install Fedora 20 on a Fujitsu Siemens FSC Lifebook C1110
2. Update to latest packages (e.g. gnome-shell 3.10.4-5).
3. Click on "Activities" in gnome-shell.
4. Crash.


GNU gdb (GDB) Fedora 7.7.1-17.fc20
Copyright (C) 2014 Free Software Foundation, Inc.

Program received signal SIGSEGV, Segmentation fault.
0x00000001 in ?? ()
(gdb) thread apply all bt

Thread 1 (Thread 0xb6d588c0 (LWP 1755))

  • #0 ??
  • #1 _cogl_pipeline_flush_gl_state
    at driver/gl/cogl-pipeline-opengl.c line 1448
  • #2 _cogl_gl_flush_attributes_state
  • #3 _cogl_flush_attributes_state
  • #4 _cogl_framebuffer_gl_draw_attributes
  • #5 _cogl_framebuffer_draw_attributes
  • #6 _cogl_journal_flush_modelview_and_entries
    at ./cogl-journal.c line 307
  • #7 batch_and_call
    at ./cogl-journal.c line 259
  • #8 _cogl_journal_flush_texcoord_vbo_offsets_and_entries
    at ./cogl-journal.c line 558
  • #9 batch_and_call
    at ./cogl-journal.c line 266
  • #10 _cogl_journal_flush_vbo_offsets_and_entries
    at ./cogl-journal.c line 665
  • #11 batch_and_call
    at ./cogl-journal.c line 266
  • #12 batch_and_call
    at ./cogl-journal.c line 266
  • #13 _cogl_journal_flush
    at ./cogl-journal.c line 1392
  • #14 _cogl_framebuffer_flush_journal
    at ./cogl-framebuffer.c line 597
  • #15 cogl_flush
    at ./cogl.c line 314
  • #16 _cogl_atlas_texture_pre_reorganize_cb
    at ./cogl-atlas-texture.c line 119
  • #17 g_hook_list_invoke
    at ghook.c line 538
  • #18 _cogl_atlas_notify_pre_reorganize
    at ./cogl-atlas.c line 345
  • #19 _cogl_atlas_reserve_space
    at ./cogl-atlas.c line 394
  • #20 _cogl_atlas_texture_allocate
    at ./cogl-atlas-texture.c line 726
  • #21 cogl_texture_allocate
    at ./cogl-texture.c line 1375
  • #22 _cogl_atlas_texture_new_from_bitmap
    at ./cogl-atlas-texture.c line 790
  • #23 _cogl_texture_new_from_bitmap
    at ./cogl-auto-texture.c line 217
  • #24 _cogl_texture_new_from_data
    at ./cogl-auto-texture.c line 164
  • #25 cogl_texture_new_from_data
    at ./cogl-auto-texture.c line 189
  • #26 st_theme_node_prerender_background
    at st/st-theme-node-drawing.c line 1257
  • #27 st_theme_node_render_resources
    at st/st-theme-node-drawing.c line 1463
  • #28 st_theme_node_paint
    at st/st-theme-node-drawing.c line 2411
  • #29 st_widget_paint_background
    at st/st-widget.c line 480
  • #30 st_widget_paint
    at st/st-widget.c line 489
  • #31 g_cclosure_marshal_VOID__VOIDv
    at gmarshal.c line 115
  • #32 g_type_class_meta_marshalv
    at gclosure.c line 997
  • #33 _g_closure_invoke_va
    at gclosure.c line 840
  • #34 g_signal_emit_valist
    at gsignal.c line 3238
  • #35 g_signal_emit
    at gsignal.c line 3386
  • #36 clutter_actor_continue_paint
    at ./clutter-actor.c line 3934
  • #37 clutter_actor_paint
    at ./clutter-actor.c line 3858
  • #38 clutter_actor_real_paint
    at ./clutter-actor.c line 3555
  • #39 st_widget_paint
    at st/st-widget.c line 492
  • #40 g_cclosure_marshal_VOID__VOIDv
    at gmarshal.c line 115
  • #41 g_type_class_meta_marshalv
    at gclosure.c line 997
  • #42 _g_closure_invoke_va
    at gclosure.c line 840
  • #43 g_signal_emit_valist
    at gsignal.c line 3238
  • #44 g_signal_emit
    at gsignal.c line 3386
  • #45 clutter_actor_continue_paint
    at ./clutter-actor.c line 3934
  • #46 clutter_actor_paint
    at ./clutter-actor.c line 3858
  • #47 st_box_layout_paint
    at st/st-box-layout.c line 428
  • #48 g_cclosure_marshal_VOID__VOIDv
    at gmarshal.c line 115
  • #49 g_type_class_meta_marshalv
    at gclosure.c line 997
  • #50 _g_closure_invoke_va
    at gclosure.c line 840
  • #51 g_signal_emit_valist
    at gsignal.c line 3238
  • #52 g_signal_emit
    at gsignal.c line 3386
  • #53 clutter_actor_continue_paint
    at ./clutter-actor.c line 3934
  • #54 clutter_actor_paint
    at ./clutter-actor.c line 3858
  • #55 clutter_actor_real_paint
    at ./clutter-actor.c line 3555
  • #56 g_cclosure_marshal_VOID__VOIDv
    at gmarshal.c line 115
  • #57 g_type_class_meta_marshalv
    at gclosure.c line 997
  • #58 _g_closure_invoke_va
    at gclosure.c line 840
  • #59 g_signal_emit_valist
    at gsignal.c line 3238
  • #60 g_signal_emit
    at gsignal.c line 3386
  • #61 clutter_actor_continue_paint
    at ./clutter-actor.c line 3934
  • #62 clutter_actor_paint
    at ./clutter-actor.c line 3858
  • #63 clutter_actor_real_paint
    at ./clutter-actor.c line 3555
  • #64 st_widget_paint
    at st/st-widget.c line 492
  • #65 g_cclosure_marshal_VOID__VOIDv
    at gmarshal.c line 115
  • #66 g_type_class_meta_marshalv
    at gclosure.c line 997
  • #67 _g_closure_invoke_va
    at gclosure.c line 840
  • #68 g_signal_emit_valist
    at gsignal.c line 3238
  • #69 g_signal_emit
    at gsignal.c line 3386
  • #70 clutter_actor_continue_paint
    at ./clutter-actor.c line 3934
  • #71 clutter_actor_paint
    at ./clutter-actor.c line 3858
  • #72 shell_generic_container_paint
    at shell-generic-container.c line 139
  • #73 g_cclosure_marshal_VOID__VOIDv
    at gmarshal.c line 115
  • #74 g_type_class_meta_marshalv
    at gclosure.c line 997
  • #75 _g_closure_invoke_va
    at gclosure.c line 840
  • #76 g_signal_emit_valist
    at gsignal.c line 3238
  • #77 g_signal_emit
    at gsignal.c line 3386
  • #78 clutter_actor_continue_paint
    at ./clutter-actor.c line 3934
  • #79 clutter_actor_paint
    at ./clutter-actor.c line 3858
  • #80 g_list_foreach
    at glist.c line 949
  • #81 clutter_group_real_paint
    at deprecated/clutter-group.c line 301
  • #82 g_cclosure_marshal_VOID__VOIDv
    at gmarshal.c line 115
  • #83 g_type_class_meta_marshalv
    at gclosure.c line 997
  • #84 _g_closure_invoke_va
    at gclosure.c line 840
  • #85 g_signal_emit_valist
    at gsignal.c line 3238
  • #86 g_signal_emit
    at gsignal.c line 3386
  • #87 clutter_actor_continue_paint
    at ./clutter-actor.c line 3934
  • #88 clutter_actor_paint
    at ./clutter-actor.c line 3858
  • #89 _clutter_stage_do_paint
    at ./clutter-stage.c line 695
  • #90 clutter_stage_cogl_redraw
    at cogl/clutter-stage-cogl.c line 563
  • #91 _clutter_stage_window_redraw
    at ./clutter-stage-window.c line 271
  • #92 clutter_stage_do_redraw
    at ./clutter-stage.c line 1214
  • #93 _clutter_stage_do_update
    at ./clutter-stage.c line 1272
  • #94 master_clock_update_stages
    at ./clutter-master-clock.c line 457
  • #95 clutter_clock_dispatch
    at ./clutter-master-clock.c line 589
  • #96 g_main_dispatch
    at gmain.c line 3066
  • #97 g_main_context_dispatch
    at gmain.c line 3642
  • #98 g_main_context_iterate
    at gmain.c line 3713
  • #99 g_main_loop_run
    at gmain.c line 3907
  • #100 meta_run
    at core/main.c line 556
  • #101 main
    at main.c line 441

(gdb) list
372	    list_modes,
373	    N_("List possible modes"),
374	    NULL
375	  },
376	  { NULL }
377	};
378	
379	int
380	main (int argc, char **argv)
381	{

(gdb) info register
eax            0x1	1
ecx            0x95a5b08	156916488
edx            0x4d84a8f0	1300539632
ebx            0x4d84d000	1300549632
esp            0xbf8d974c	0xbf8d974c
ebp            0xbf8d97f8	0xbf8d97f8
esi            0x1	1
edi            0x9592480	156836992
eip            0x1	0x1
eflags         0x10202	[ IF RF ]
cs             0x73	115
ss             0x7b	123
ds             0x7b	123
es             0x7b	123
fs             0x0	0
gs             0x33	51
(gdb) quit
A debugging session is active.

	Inferior 1 [process 1755] will be detached.

Quit anyway? (y or n) Detaching from program: /usr/bin/gnome-shell, process 1755
Comment 1 André Klapper 2014-07-23 21:16:11 UTC
https://bugzilla.redhat.com/show_bug.cgi?id=1046970 looks very very similar.
Comment 2 drago01 2014-07-24 08:59:25 UTC
Can you try if running:

COGL_DEBUG=disable-arbfp gnome-shell --replace

or

COGL_DEBUG=disable-arbfp:disable-glsl gnome-shell --replace

work?
Comment 3 André Klapper 2014-07-24 11:59:34 UTC
1. export DISPLAY=:0
2. COGL_DEBUG=disable-arbfp:disable-glsl gnome-shell --replace

After doing that and a message that gnome-shell was (re)started, I get:

(gnome-shell:2229): Clutter-WARNING **: Unable to use ShaderEffect: the graphics hardware or the current GL driver does not implement support for the GLSL shading language.

And I can still reproduce the crash with the given steps.

"lspci | grep VGA" says:
00:02.0 VGA compatible controller: Intel Corporation 82852/855GM Integrated Graphics Device (rev 02)
Comment 4 drago01 2014-07-24 12:10:38 UTC
(In reply to comment #3)
> 1. export DISPLAY=:0
> 2. COGL_DEBUG=disable-arbfp:disable-glsl gnome-shell --replace
> 
> After doing that and a message that gnome-shell was (re)started, I get:
> 
> (gnome-shell:2229): Clutter-WARNING **: Unable to use ShaderEffect: the
> graphics hardware or the current GL driver does not implement support for the
> GLSL shading language.

That does not have anything to do with the crash.

> And I can still reproduce the crash with the given steps.
> 
> "lspci | grep VGA" says:
> 00:02.0 VGA compatible controller: Intel Corporation 82852/855GM Integrated
> Graphics Device (rev 02)

Ugh ... You wrote that it worked before the upgrade ? This looks like a mesa bug .. can you try running gnome-shell with LIBGL_ALWAYS_SOFTWARE=1 (will be slower but check if you can reproduce the crash that way).

If it does can you try to downgrade mesa?
Comment 5 drago01 2014-07-24 12:43:38 UTC
OK actually I can reproduce this with COGL_DEBUG=disable-arbfp:disable-glsl seems like the fixed backend is broken.
Comment 6 drago01 2014-07-24 13:45:37 UTC
OK this is our bug we use GLSL unconditonally.
Comment 7 drago01 2014-07-24 13:46:09 UTC
Created attachment 281582 [details] [review]
lightbox: Do not assume GLSL is available

Some hardware does not support it causing crashes in cogl during paint.
Comment 8 drago01 2014-07-24 13:46:24 UTC
Created attachment 281583 [details] [review]
background: Do not assume GLSL is available

Some hardware does not support it causing crashes in cogl during paint.
Comment 9 drago01 2014-07-24 13:52:38 UTC
Created attachment 281584 [details] [review]
st-scroll-view-fade: Refuse to work without GLSL

Disable the effect when GLSL is not available otherwise we will
crash later.
Comment 10 Jasper St. Pierre (not reading bugmail) 2014-07-24 13:57:29 UTC
Review of attachment 281582 [details] [review]:

OK.
Comment 11 Jasper St. Pierre (not reading bugmail) 2014-07-24 13:58:19 UTC
Review of attachment 281583 [details] [review]:

Without this, the background will be at full brightness. We should have a fallback path that tints the background a solid color.
Comment 12 Jasper St. Pierre (not reading bugmail) 2014-07-24 13:59:09 UTC
Review of attachment 281584 [details] [review]:

OK.
Comment 13 Giovanni Campagna 2014-07-24 14:00:10 UTC
Actually, it was a deliberate decision in the past to require OpenGL 2.1 and GLSL always.
Old cards (i915 and i810) should use llvmpipe.
Comment 14 Jasper St. Pierre (not reading bugmail) 2014-07-24 14:02:25 UTC
(In reply to comment #13)
> Actually, it was a deliberate decision in the past to require OpenGL 2.1 and
> GLSL always.
> Old cards (i915 and i810) should use llvmpipe.

When was this decision made?
Comment 15 drago01 2014-07-24 14:03:06 UTC
(In reply to comment #13)
> Actually, it was a deliberate decision in the past to require OpenGL 2.1 and
> GLSL always.
> Old cards (i915 and i810) should use llvmpipe.

Well those old cards are still faster then using llvmpipe on the CPUs that got shipped at their time. Supporting them does not cost us much if it does we could reconsider.
Comment 16 drago01 2014-07-24 14:03:37 UTC
(In reply to comment #11)
> Review of attachment 281583 [details] [review]:
> 
> Without this, the background will be at full brightness. We should have a
> fallback path that tints the background a solid color.

Sure but "bright background" is still better then crashing.
Comment 17 Jasper St. Pierre (not reading bugmail) 2014-07-24 14:04:48 UTC
We can still have a simple fixed function pipeline pass that dims the texture by blending it with a solid color, though.
Comment 18 Giovanni Campagna 2014-07-24 14:18:03 UTC
(In reply to comment #14)
> (In reply to comment #13)
> > Actually, it was a deliberate decision in the past to require OpenGL 2.1 and
> > GLSL always.
> > Old cards (i915 and i810) should use llvmpipe.
> 
> When was this decision made?

I don't remember tbh, but it's something I've considered true at least in recent times.
Comment 19 drago01 2014-07-24 14:39:18 UTC
Created attachment 281600 [details] [review]
background: Do not assume GLSL is available

Some hardware does not support it causing crashes in cogl during paint.

---

Added non GLSL fallback.
Comment 20 drago01 2014-07-24 14:40:32 UTC
Created attachment 281601 [details] [review]
st-scroll-view-fade: Refuse to work without GLSL

Disable the effect when GLSL is not available otherwise we will
crash later.

--

Stop spamming the log.
Comment 21 drago01 2014-07-24 14:47:18 UTC
(In reply to comment #18)
> (In reply to comment #14)
> > (In reply to comment #13)
> > > Actually, it was a deliberate decision in the past to require OpenGL 2.1 and
> > > GLSL always.
> > > Old cards (i915 and i810) should use llvmpipe.
> > 
> > When was this decision made?
> 
> I don't remember tbh, but it's something I've considered true at least in
> recent times.

Well saying "if you have no GLSL you have less effects" (like happens for the scroll view fade) is different from saying "you have no GLSL go use llvmpipe" the latter is a bit harsh.
Comment 22 Jasper St. Pierre (not reading bugmail) 2014-07-24 14:49:18 UTC
Review of attachment 281600 [details] [review]:

Yeah, this is what I expected.
Comment 23 Jasper St. Pierre (not reading bugmail) 2014-07-24 14:49:40 UTC
Review of attachment 281601 [details] [review]:

Fine.
Comment 24 drago01 2014-07-24 14:51:31 UTC
Attachment 281582 [details] pushed as 9a05aea - lightbox: Do not assume GLSL is available
Attachment 281601 [details] pushed as ce5cd3b - st-scroll-view-fade: Refuse to work without GLSL
Comment 25 drago01 2014-07-24 14:52:13 UTC
Attachment 281600 [details] pushed as 37652ca - background: Do not assume GLSL is available
Comment 26 André Klapper 2014-07-24 18:27:43 UTC
Thanks for the fix, that was quick!

(In reply to comment #4)
> Ugh ... You wrote that it worked before the upgrade ?

No, at least not in 3.10.  gnome-shell 3.6 worked fine on this machine.
Comment 27 André Klapper 2014-07-24 18:38:36 UTC
Hmm, backporting to 3.10 so somebody could pick it up for a Fedora20 package probably isn't on the list, right? :)
Comment 29 André Klapper 2014-07-24 18:44:04 UTC
Heh. Again, thanks so much guys! 
Let me buy you a beer at Guadec if you're around.
Comment 30 drago01 2014-07-24 18:48:43 UTC
(In reply to comment #28)
> (In reply to comment #27)
> > Hmm, backporting to 3.10 so somebody could pick it up for a Fedora20 package
> > probably isn't on the list, right? :)
> 
> Wrong ;)
> 
> https://git.gnome.org/browse/mutter/commit/?h=gnome-3-10&id=72ec20e48f085af729c5b0afdd78d259694a052a
> 
> https://git.gnome.org/browse/gnome-shell/commit/?h=gnome-3-10&id=2ed619f5de2d10ccb1dbf9ea81da5807467dccf0
> 
> https://bugzilla.redhat.com/show_bug.cgi?id=1046970#c24

You can test those scratch builds:

http://koji.fedoraproject.org/koji/taskinfo?taskID=7192015 (gnome-shell)
http://koji.fedoraproject.org/koji/taskinfo?taskID=7192019 (mutter)

once they complete. I am waiting for the pulseaudio update to get pushed to build proper packages.
Comment 31 André Klapper 2014-07-24 20:07:07 UTC
(In reply to comment #30)
> You can test those scratch builds:

Downloaded them and installed the two packages via 'rpm -Uhv' but after restart, I get "Oh no! Something has gone wrong." Stacktrace blames Pulseaudio (as expected) so I reverted and will wait for the standard update procedure.
Still and again, thanks for your efforts!
Comment 32 drago01 2014-07-24 20:17:03 UTC
(In reply to comment #31)
> (In reply to comment #30)
> > You can test those scratch builds:
> 
> Downloaded them and installed the two packages via 'rpm -Uhv' but after
> restart, I get "Oh no! Something has gone wrong." Stacktrace blames Pulseaudio
> (as expected) so I reverted and will wait for the standard update procedure.
> Still and again, thanks for your efforts!

Oh sorry forgot that the updated pulseaudio is already in the build root (which reverts an accidental abi break) ... so yeah you have to wait a few days.
Comment 33 drago01 2014-08-02 11:06:14 UTC
(In reply to comment #31)
> (In reply to comment #30)
> > You can test those scratch builds:
> 
> Downloaded them and installed the two packages via 'rpm -Uhv' but after
> restart, I get "Oh no! Something has gone wrong." Stacktrace blames Pulseaudio
> (as expected) so I reverted and will wait for the standard update procedure.
> Still and again, thanks for your efforts!

https://admin.fedoraproject.org/updates/FEDORA-2014-8922/gnome-shell-3.10.4-8.fc20,mutter-3.10.4-3.fc20