gjs code indexer crashes in gjs_log_exception_full()
I tried to start using Builder to develop WebKit again today (recently I'd been using it comfortably for smaller projects). It seemed to be going well at first, but eventually I noticed my fan was spinning up... and ABRT was complaining about a lot of system problems... final score is 893 gjs-console crashes in 7 minutes before I realized Builder was to blame and closed it.
@pgriffis has pointed me to here: https://gitlab.gnome.org/GNOME/gnome-builder/-/blob/6d9d71f0cfc0587291729a38515321ebce1b2309/src/plugins/gjs-symbols/gjs_symbols.py#L243
We're not really sure what to do about it. The problem is that we pass arbitrary untrusted content into gjs (the contents of any file ending in a .js extension), but gjs crashes (well, emits a critical, which is then turned into a crash) when the content is not valid gjs. In this case, the content is a JavaScript test262 file that uses class fields, which gjs doesn't handle. So the code indexer crashes.
The code indexers are apparently running inside the "runtime" environment, i.e. my JHBuild environment. I use G_DEBUG=fatal-criticals in my jhbuildrc, because otherwise software development is too hard. Patrick suggested unsetting G_DEBUG when running the code indexer, but that's not good enough IMO. It will still result in criticals being spammed to the system journal, and it's incompatible with a future where fatal-criticals might be enabled desktop-wide. Maybe gjs should use g_warning() instead of g_critical() for exceptions? (CC @ptomato)
(gdb) bt full
#0 g_logv
(log_domain=0x7f212003906c "Gjs", log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=<optimized out>)
at ../glib/gmessages.c:1377
domain = 0x0
data = 0x0
depth = 0
log_func = 0x7f211fed3bc0 <g_log_default_handler>
domain_fatal_mask = <optimized out>
masquerade_fatal = <optimized out>
test_level = <optimized out>
was_fatal = <optimized out>
was_recursion = <optimized out>
msg = 0x55ad62a51770 "JS ERROR: SyntaxError: fields are not currently supported @ /home/mcatanzaro/Projects/WebKit/JSTests/test262/test/language/expressions/class/elements/regular-definitions-rs-field-identifier.js:60"
msg_alloc = 0x55ad62a51770 "JS ERROR: SyntaxError: fields are not currently supported @ /home/mcatanzaro/Projects/WebKit/JSTests/test262/test/language/expressions/class/elements/regular-definitions-rs-field-identifier.js:60"
i = 3
#1 0x00007f211fed4163 in g_log
(log_domain=log_domain@entry=0x7f212003906c "Gjs", log_level=log_level@entry=G_LOG_LEVEL_CRITICAL, format=format@entry=0x7f212004980e "JS ERROR: %s @ %s:%u") at ../glib/gmessages.c:1415
args = {{gp_offset = 48, fp_offset = 48, overflow_arg_area = 0x7ffc52002a90, reg_save_area = 0x7ffc520029d0}}
#2 0x00007f2120030b13 in gjs_log_exception_full(JSContext*, JS::Handle<JS::Value>, JS::Handle<JSString*>)
(context=0x55ad62980480, exc=..., message=...) at ../gjs/jsapi-util.cpp:453
js_lineNumber =
{<js::RootedBase<JS::Value, JS::Rooted<JS::Value> >> = {<js::MutableWrappedPtrOperations<JS::Value, JS::Rooted<JS::Value> >> = {<js::WrappedPtrOperations<JS::Value, JS::Rooted<JS::Value> >> = {<No data fields>}, <No data fields>}, <No data fields>}, stack = 0x55ad629804e8, prev = 0x7ffc52002ba0, ptr = {asBits_ = 18444633011384221756, asDouble_ = -nan(0x880000000003c), debugView_ = {payload47_ = 60, tag_ = JSVAL_TAG_INT32}, s_ = {payload_ = {i32_ = 60, u32_ = 60, why_ = 60}}}}
js_fileName =
{<js::RootedBase<JS::Value, JS::Rooted<JS::Value> >> = {<js::MutableWrappedPtrOperations<JS::Value, JS::Rooted<JS::Value> >> = {<js::WrappedPtrOperations<JS::Value, JS::Rooted<JS::Value> >> = {<No data fields>}, <No data fields>}, <No data fields>}, stack = 0x55ad629804e8, prev = 0x7ffc52002b00, ptr = {asBits_ = 18445356048799764672, asDouble_ = -nan(0xb1199445010c0), debugView_ = {payload47_ = 19349973766336, tag_ = JSVAL_TAG_STRING}, s_ = {payload_ = {i32_ = 1146097856, u32_ = 1146097856, why_ = 1146097856}}}}
lineNumber = <optimized out>
utf8_filename = <optimized out>
is_syntax = <optimized out>
atoms =
@0x55ad6299ea20: {code = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042733504}}}, column_number = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042586208}}}, connect_after = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042972352}}}, constructor = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042586400}}}, debuggee = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::Property--Type <RET> for more, q to quit, c to continue without paging--c
Key> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042972384}}}, detail = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042972416}}}, emit = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042972448}}}, file = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042972480}}}, file_name = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042587968}}}, func = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042670272}}}, gi = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042476288}}}, gio = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042972512}}}, glib = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042972544}}}, gobject = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042972576}}}, gtype = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042972608}}}, height = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042972640}}}, imports = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042972672}}}, init = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042972704}}}, instance_init = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042972736}}}, interact = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042972768}}}, length = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042590656}}}, line_number = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042590752}}}, message = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042591072}}}, module_init = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042972800}}}, module_name = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042972832}}}, module_path = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042972864}}}, name = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042591552}}}, new_ = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042591680}}}, new_internal = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042972896}}}, overrides = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042972928}}}, param_spec = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042972960}}}, parent_module = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042983048}}}, program_invocation_name = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042983088}}}, prototype = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042592992}}}, search_path = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042972992}}}, signal_id = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042973024}}}, stack = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042593920}}}, to_string = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042594912}}}, value_of = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042595776}}}, version = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042973056}}}, versions = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042973088}}}, width = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042973120}}}, window = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042973152}}}, x = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042437952}}}, y = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042437984}}}, hook_up_vfunc = {<GjsAtom> = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042602244}}}, <No data fields>}, private_ns_marker = {<GjsAtom> = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042602260}}}, <No data fields>}, signal_find = {<GjsAtom> = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042602276}}}, <No data fields>}, signals_block = {<GjsAtom> = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042602292}}}, <No data fields>}, signals_disconnect = {<GjsAtom> = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042602308}}}, <No data fields>}, signals_unblock = {<GjsAtom> = {m_jsid = {<js::HeapBase<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::MutableWrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<js::WrappedPtrOperations<JS::PropertyKey, JS::Heap<JS::PropertyKey> >> = {<No data fields>}, <No data fields>}, <No data fields>}, ptr = {asBits = 50093042602324}}}, <No data fields>}}
exc_obj = {<js::RootedBase<JSObject*, JS::Rooted<JSObject*> >> = {<js::MutableWrappedPtrOperations<JSObject*, JS::Rooted<JSObject*> >> = {<js::WrappedPtrOperations<JSObject*, JS::Rooted<JSObject*> >> = {<No data fields>}, <No data fields>}, <No data fields>}, stack = 0x55ad629804a0, prev = 0x0, ptr = 0x2d8f32099080}
exc_str = {<js::RootedBase<JSString*, JS::Rooted<JSString*> >> = {<js::MutableWrappedPtrOperations<JSString*, JS::Rooted<JSString*> >> = {<js::WrappedPtrOperations<JSString*, JS::Rooted<JSString*> >> = {<No data fields>}, <No data fields>}, <No data fields>}, stack = 0x55ad629804c0, prev = 0x0, ptr = 0x119944501110}
utf8_exception = <optimized out>
utf8_message = {mTuple = {<mozilla::detail::PairHelper<char*, JS::FreePolicy, (mozilla::detail::StorageType)1, (mozilla::detail::StorageType)0>> = {<JS::FreePolicy> = {<No data fields>}, mFirstA = 0x0}, <No data fields>}}
#3 0x00007f2120030cb2 in gjs_log_exception(JSContext*) (context=0x55ad62980480) at /usr/include/mozjs-68/js/RootingAPI.h:1212
exc = {<js::RootedBase<JS::Value, JS::Rooted<JS::Value> >> = {<js::MutableWrappedPtrOperations<JS::Value, JS::Rooted<JS::Value> >> = {<js::WrappedPtrOperations<JS::Value, JS::Rooted<JS::Value> >> = {<No data fields>}, <No data fields>}, <No data fields>}, stack = 0x55ad629804e8, prev = 0x7ffc52002c00, ptr = {asBits_ = 18446231216799191168, asDouble_ = -nan(0xe2d8f32099080), debugView_ = {payload47_ = 50093043060864, tag_ = JSVAL_TAG_OBJECT}, s_ = {payload_ = {i32_ = 839487616, u32_ = 839487616, why_ = 839487616}}}}
#4 0x00007f21200049ae in GjsContextPrivate::eval(char const*, long, char const*, int*, _GError**) (this=0x55ad629810b0, script=<optimized out>, script_len=<optimized out>, filename=0x55ad627b1027 "<command line>", exit_status_p=0x7ffc52002d0c, error=0x7ffc52002d10) at ../gjs/context.cpp:988
code = <optimized out>
reset = {m_self = 0x55ad629810b0}
auto_profile = false
ar = {cx_ = 0x55ad62980480, oldRealm_ = 0x0}
retval = {<js::RootedBase<JS::Value, JS::Rooted<JS::Value> >> = {<js::MutableWrappedPtrOperations<JS::Value, JS::Rooted<JS::Value> >> = {<js::WrappedPtrOperations<JS::Value, JS::Rooted<JS::Value> >> = {<No data fields>}, <No data fields>}, <No data fields>}, stack = 0x55ad629804e8, prev = 0x0, ptr = {asBits_ = 18444914486360932352, asDouble_ = -nan(0x9800000000000), debugView_ = {payload47_ = 0, tag_ = JSVAL_TAG_UNDEFINED}, s_ = {payload_ = {i32_ = 0, u32_ = 0, why_ = JS_ELEMENTS_HOLE}}}}
ok = false
#5 0x00007f2120004bed in gjs_context_eval(GjsContext*, char const*, gssize, char const*, int*, GError**) (js_context=0x55ad629811a0 [GjsContext], script=0x55ad6297cde0 "var data; if (ARGV[0] === '--file') { const GLib = imports.gi.GLib; var ret = GLib.file_get_contents(ARGV[1]); data = ret[1]; } else { data = ARGV[0]; } print(JSON.stringify(Reflect.parse(data"..., script_len=350, filename=0x55ad627b1027 "<command line>", exit_status_p=0x7ffc52002d0c, error=0x7ffc52002d10) at ../gjs/context.cpp:934
__PRETTY_FUNCTION__ = "bool gjs_context_eval(GjsContext*, const char*, gssize, const char*, int*, GError**)"
gjs = <optimized out>
#6 0x000055ad627b0250 in define_argv_and_eval_script(_GjsContext*, int, char* const*, char const*, unsigned long, char const*) (js_context=0x55ad629811a0 [GjsContext], argc=<optimized out>, argv=<optimized out>, script=0x55ad6297cde0 "var data; if (ARGV[0] === '--file') { const GLib = imports.gi.GLib; var ret = GLib.file_get_contents(ARGV[1]); data = ret[1]; } else { data = ARGV[0]; } print(JSON.stringify(Reflect.parse(data"..., len=350, filename=0x55ad627b1027 "<command line>") at ../gjs/console.cpp:204
error = 0x55ad62a786a0
code = 32545
#7 0x000055ad627afd83 in main(int, char**) (argc=5, argv=<optimized out>) at ../gjs/console.cpp:385
context = <optimized out>
error = 0x0
js_context = 0x55ad629811a0 [GjsContext]
coverage = 0x0
script = 0x55ad6297cde0 "var data; if (ARGV[0] === '--file') { const GLib = imports.gi.GLib; var ret = GLib.file_get_contents(ARGV[1]); data = ret[1]; } else { data = ARGV[0]; } print(JSON.stringify(Reflect.parse(data"...
filename = 0x55ad627b1027 "<command line>"
program_name = <optimized out>
len = 350
gjs_argc = <optimized out>
script_argc = <optimized out>
ix = <optimized out>
argv_copy = 0x55ad6297a340
argv_copy_addr = 0x55ad6297a340
gjs_argv = 0x55ad6297cc00
gjs_argv_addr = 0x55ad6297cc00
script_argv = <optimized out>
env_coverage_output_path = <optimized out>
env_coverage_prefixes = <optimized out>
interactive_mode = <optimized out>
argc_copy = <optimized out>
__PRETTY_FUNCTION__ = "int main(int, char**)"
env_tracefd = <optimized out>
tracefd = <optimized out>
code = <optimized out>