Interference in concurrent wire transactions between plugins and core
The test case is Filters>Dev>SF>Test>Sphere v3. When you choose a gradient, then close, you see in the terminal:
(Sphere v3:595): GLib-GObject-CRITICAL **: 13:25:53.189: g_value_get_boolean: assertion 'G_VALUE_HOLDS_BOOLEAN (value)' failed
This is an instance of a general problem: the wire protocol does not support concurrent transactions between plugin and core. When core starts a protocol sequence to a plugin process and waits for a response, and the plugin process asynchronously starts another protocol sequence, the sequences can get interleaved, and one sequence receives messages intended for the other sequence. In this case, the user on the GIMP app chooses a gradient, starting a sequence to the plugin, and the plugin also starts a sequence to core, to get the gradient data for redraw purposes. One sequence gets a non-boolean value intended for the other sequence.
Another instance of this bug was also seen and fixed by commit 66a05c88. There is more discussion at the thread for that commit.
The Sphere v3 instance described above should be fixed by !1125 (merged).
Both the fixes are not general solutions. The fixes seem like workarounds, code that seems extraneous but that avoids concurrent transactions. The larger issue is an architectural issue that might require changes to the wire protocol. For now the solution is: don't do concurrent protocol sequences.
This issue is reported as a heads up: if you see similar symptoms for a plugin, suspect a similar cause.
This issue is rarely seen, only since reworking of the resource chooser widgets, where both core and the plugin are implementing GUI in cooperation.
Probably does not impact 2.10.