Crash on Json.serialize_gvariant if passing any variant
Submitted by Marcin Lewandowski
Link to original bug (#763185)
Description
I am using json-glib 1.0.4 on Mac OS X, installed via brew.
When I call in my Vala (0.30.0) code Json.gvariant_serialize and GVariant is boolean I get segfault with the following message:
GLib:ERROR:gvarianttypeinfo.c:184:g_variant_type_info_check: assertion failed: (0 <= index && index < 24)
Sample program:
static int main(string[] argv) {
var v = new Variant.boolean(false);
var n = Json.gvariant_serialize(v);
return 0;
}
Compile with valac --pkg json-glib-1.0 crash.vala
Stack trace:
* thread #1: tid = 0x0000, 0x00007fff92af0002 libsystem_kernel.dylib`__pthread_kill + 10, stop reason = signal SIGSTOP
* frame #0: 0x00007fff92af0002 libsystem_kernel.dylib`__pthread_kill + 10
frame #1: 0x00007fff927295c5 libsystem_pthread.dylib`pthread_kill + 90
frame #2: 0x00007fff9466f6e7 libsystem_c.dylib`abort + 129
frame #3: 0x0000000108c17112 libglib-2.0.0.dylib`g_assertion_message + 382
frame #4: 0x0000000108c17170 libglib-2.0.0.dylib`g_assertion_message_expr + 94
frame #5: 0x0000000108c3085f libglib-2.0.0.dylib`g_variant_type_info_check + 340
frame #6: 0x0000000108c306dc libglib-2.0.0.dylib`g_variant_type_info_get_type_string + 16
frame #7: 0x0000000108c252f9 libglib-2.0.0.dylib`g_variant_classify + 14
frame #8: 0x00000001085eec36 libjson-glib-1.0.0.dylib`json_gvariant_serialize + 18
frame #9: 0x00000001085e6e61 crash`_vala_main + 97
frame #10: 0x00000001085e6f22 crash`main + 34
frame #11: 0x00007fff995c55ad libdyld.dylib`start + 1
frame #12: 0x00007fff995c55ad libdyld.dylib`start + 1
I've changed type to uint16 just for testing - the effect is the same.
Edited by Corentin Noël