bugFreeciv - Bugs: bug #21373, Switching between nationsets...

 
 
Show feedback again

bug #21373: Switching between nationsets causes Cairo-related assertion failure for flags

Submitted by:  Marko Lindqvist <cazfi>
Submitted on:  Wed 25 Dec 2013 02:21:43 AM UTC  
 
Category: client-gtk-3.0Severity: 3 - Normal
Priority: 5 - NormalStatus: None
Assigned to: NoneOpen/Closed: Open
Release: Operating System: None
Planned Release: 2.6.0

Add a New Comment (Rich MarkupRich Markup):
   

You are not logged in

Please log in, so followups can be emailed to you.

 

Wed 19 Feb 2014 12:38:38 AM UTC, comment #5:

Ran into bug #21692 when I came to look at this; maybe related?

Jacob Nevins <jtn>
Project Administrator
Sat 28 Dec 2013 11:52:19 AM UTC, comment #4:

OK, I'm back on my main computer and am now seeing this (on trunk but not S2_5, oddly).

Jacob Nevins <jtn>
Project Administrator
Wed 25 Dec 2013 12:19:28 PM UTC, comment #3:

> dpkg -s libcairo2 -> Version: 1.12.16-2

1.10.2-6.1ubuntu3 for me.

I think the format assumption documented by that assertion in sprite_get_bounding_box() is at the mercy of the behaviour of cairo_image_surface_create_from_png() called from our load_gfxfile().

Looking at the [http://cgit.freedesktop.org/cairo/tree/src/cairo-png.c#n639 current Cairo git code), it can create a surface with format CAIRO_FORMAT_ARGB32 or CAIRO_FORMAT_RGB24, depending on the PNG format it finds.

However, I think my packaged libcairo2 looks similar to the top of tree in this regard, so I'm not sure why I'm not seeing it.

(Also, the comment about cairo-png "It is a toy API" is a bit worrying.)

Jacob Nevins <jtn>
Project Administrator
Wed 25 Dec 2013 11:01:03 AM UTC, comment #2:

> (I believe you're using a newer Gtk3 than me, for what that's
> worth.)


dpkg -s libgtk-3-0 -> Version: 3.8.6-1
dpkg -s libcairo2 -> Version: 1.12.16-2

> (Maybe this happens when initially popping up the pick-nations
> dialog as well as when interacting with the nationsets control?)


No

That popup_races_dialog() part is interesting in that I just got one of the backtraces on screen (as I said there was a lot of them - maybe one per nation?) there. Now that I reproduced this, I can't see one with popup_races_dialog(), but all have races_update_pickable() there.

1: in sprite_get_bounding_box() [client/gui-gtk-3.0/sprite.c::190]: assertion 'cairo_image_surface_get_format(sprite->surface) == CAIRO_FORMAT_ARGB32' failed.
2: Backtrace:
2: 0: ./client/freeciv-gtk3() [0x5e640d]
2: 1: ./client/freeciv-gtk3(vdo_log+0x78) [0x5eafc8]
2: 2: ./client/freeciv-gtk3(do_log+0x7d) [0x5eb05d]
2: 3: ./client/freeciv-gtk3(fc_assert_fail+0x8e) [0x5eb24e]
2: 4: ./client/freeciv-gtk3(sprite_get_bounding_box+0x2a5) [0x469345]
2: 5: ./client/freeciv-gtk3(get_flag+0x3c) [0x463dec]
2: 6: ./client/freeciv-gtk3() [0x4d66d9]
2: 7: ./client/freeciv-gtk3() [0x4d69d4]
2: 8: ./client/freeciv-gtk3(races_update_pickable+0x114) [0x4d7d04]
2: 9: ./client/freeciv-gtk3(client_handle_packet+0x2b) [0x4a316b]
2: 10: ./client/freeciv-gtk3(client_packet_input+0x1f) [0x46ff8f]
2: 11: ./client/freeciv-gtk3(input_from_server+0x6c) [0x47631c]

Marko Lindqvist <cazfi>
Project Administrator
Wed 25 Dec 2013 09:29:33 AM UTC, comment #1:

Interesting -- I haven't seen these.
(I believe you're using a newer Gtk3 than me, for what that's worth.)

Interesting to see popup_races_dialog() in the backtrace -- I don't think I expect that when interacting with the nationset control. (Maybe this happens when initially popping up the pick-nations dialog as well as when interacting with the nationsets control?)

Jacob Nevins <jtn>
Project Administrator
Wed 25 Dec 2013 02:21:43 AM UTC, original submission:

I get several of these every time I switch from core to extended, and I think once when switching the other direction:

1: in sprite_get_bounding_box() [client/gui-gtk-3.0/sprite.c::190]: assertion 'cairo_image_surface_get_format(sprite->surface) == CAIRO_FORMAT_ARGB32' failed.
2: Backtrace:
2: 0: ./client/freeciv-gtk3() [0x5e640d]
2: 1: ./client/freeciv-gtk3(vdo_log+0x78) [0x5eafc8]
2: 2: ./client/freeciv-gtk3(do_log+0x7d) [0x5eb05d]
2: 3: ./client/freeciv-gtk3(fc_assert_fail+0x8e) [0x5eb24e]
2: 4: ./client/freeciv-gtk3(sprite_get_bounding_box+0x2a5) [0x469345]
2: 5: ./client/freeciv-gtk3(get_flag+0x3c) [0x463dec]
2: 6: ./client/freeciv-gtk3() [0x4d66d9]
2: 7: ./client/freeciv-gtk3() [0x4d6a2b]
2: 8: ./client/freeciv-gtk3(popup_races_dialog+0x3b3) [0x4d81a3]
2: 9: ./client/freeciv-gtk3() [0x45d75d]

Marko Lindqvist <cazfi>
Project Administrator

 

(Note: upload size limit is set to 1024 kB, after insertion of the required escape characters.)

Attach File(s):
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -unavailable- added by jtn (Posted a comment)
  • -unavailable- added by cazfi (Submitted the item)
  •  

    Do you think this task is very important?
    If so, you can click here to add your encouragement to it.
    This task has 0 encouragements so far.

    Only logged-in users can vote.

     

    Please enter the title of George Orwell's famous dystopian book (it's a date):

     

     

    Follow 2 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Sat 11 Jan 2014 11:18:15 AM UTCjtnSummarySwitching between nationsets cause assert failure=>Switching between nationsets causes Cairo-related assertion failure for flags
    Wed 25 Dec 2013 02:22:09 AM UTCcazfiSummarySwitching between nationsets cause gtk-assert=>Switching between nationsets cause assert failure
    Show feedback again

    Back to the top


    Powered by Savane 3.1-cleanup