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 741375 - Windows: GTK+ programs stop running due to changes in CSS parsing
Windows: GTK+ programs stop running due to changes in CSS parsing
Status: RESOLVED FIXED
Product: gtk+
Classification: Platform
Component: .General
3.15.x
Other Windows
: Normal critical
: ---
Assigned To: gtk-bugs
gtk-bugs
Depends on:
Blocks:
 
 
Reported: 2014-12-11 04:57 UTC by Fan, Chun-wei
Modified: 2014-12-11 14:23 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Callstack just before the g_assert_not_reached() (7.88 KB, text/plain)
2014-12-11 09:05 UTC, Fan, Chun-wei
Details

Description Fan, Chun-wei 2014-12-11 04:57:09 UTC
Hi,

(Sorry, as I am not able to deduce a more specific component for this CSS-theming (or so) related issue).

There were some very recent internal changes on how the CSS parsing mechanism works, which actually caused the gtk3-demo program, and likely to abort upon applying the patch from commit 272a008 (cssselector: Turn into a union) to abort due to an gassert_not_reached() in get_position_match() in gtkcssselector.c.  It seems that the value of selector->position.type became -2 somehow (at the third time that get_position_match() is run) during the conversion of GtkCssSelector into an union.

I will also try to look into this on what specifically caused this, or if any pointer to fix this would also be highly appreciated (e.g. is the GDK-Win32 backend-related to this issue, which I am initially inclined to doubt?)

With blessings, thank you!
Comment 1 Fan, Chun-wei 2014-12-11 09:05:34 UTC
Created attachment 292511 [details]
Callstack just before the g_assert_not_reached()

Hi,

More specifically, the problem occurs when we are doing _gtk_css_selector_tree_match_all() for a GtkCssSelectorTree with class name pseudoclass-position, so it seems that the change affected how a GtkCssSelector union is being filled in upon initialization, and perhaps something was missed during the process.

I have attached a callstack prior to the g_assert_not_reached() for references.

With blessings, thank you!
Comment 2 Fan, Chun-wei 2014-12-11 09:20:03 UTC
(For references, the build was based on all of Benjamin's commits on cssselector reverted up to 272a008)
Comment 3 Benjamin Otte (Company) 2014-12-11 11:53:17 UTC
Should be fixed in master by 3e9067ce1c602dfff0d1450be52e9cabef869f79.
Comment 4 Fan, Chun-wei 2014-12-11 14:23:09 UTC
Hello Benjamin,

Yes, that fixed the issue.

With blessings, thank you!