Closed Bug 1356718 Opened 8 years ago Closed 8 years ago

Crash in mozilla::intl::OSPreferences::ReadDateTimePattern when trying to view recent downloads (arrow button)

Categories

(Core :: Internationalization, defect)

Unspecified
Linux
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla55
Tracking Status
firefox52 --- unaffected
firefox-esr52 --- unaffected
firefox53 --- unaffected
firefox54 --- fixed
firefox55 --- fixed

People

(Reporter: jbeich, Assigned: zbraniecki)

References

Details

(Keywords: crash, regression)

Crash Data

Attachments

(1 file)

The first bad is mozilla-central changeset 773bb4c632f6. $ c++ -v FreeBSD clang version 4.0.0 (tags/RELEASE_400/final 297347) (based on LLVM 4.0.0) Target: x86_64-unknown-freebsd12.0 Thread model: posix InstalledDir: /usr/bin $ pkg info -x '^(gtk|glib)' glib-2.50.2,1 gtk2-2.24.31 gtk3-3.18.9 $ ./mach bootstrap $ ./mach build $ env -i DISPLAY=:0 SHELL=/bin/sh TERM=screen-256color \ HOME=/home/foo PATH=/sbin:/bin:/usr/sbin:/usr/bin \ ./mach run <Context Menu> <Save Page As> <Downloads button> (firefox:28236): GLib-GIO-ERROR **: Settings schema 'org.gnome.desktop.interface' is not installed <SIGTRAP> (lldb) bt * thread #1, name = 'firefox', stop reason = signal SIGTRAP * frame #0: libglib-2.0.so.0`_g_log_abort(breakpoint=1) at gmessages.c:484 frame #1: libglib-2.0.so.0`g_log_structured_array(log_level=G_LOG_LEVEL_ERROR, fields=0x00007fffffff4c00, n_fields=4) at gmessages.c:1776 frame #2: libglib-2.0.so.0`g_log_default_handler(log_domain="", log_level=6, message="Settings schema 'org.gnome.desktop.interface' is not installed\n", unused_data=0x0000000000000000) at gmessages.c:2816 frame #3: libglib-2.0.so.0`g_logv(log_domain="", log_level=G_LOG_LEVEL_ERROR, format="", args=0x00007fffffff5320) at gmessages.c:1275 frame #4: libglib-2.0.so.0`g_log(log_domain="", log_level=G_LOG_LEVEL_ERROR, format="") at gmessages.c:1337 frame #5: libgio-2.0.so.0`g_settings_set_property(object=0x000000082ac828a0, prop_id=2, value=0x00007fffffff5438, pspec=0x000000081911cf00) at gsettings.c:590 frame #6: libgobject-2.0.so.0`object_set_property(object=0x000000082ac828a0, pspec=0x000000081911cf00, value=0x00007fffffff54e0, nqueue=0x000000082bf6a3f0) at gobject.c:1423 frame #7: libgobject-2.0.so.0`g_object_new_internal(class=0x000000082a955b00, params=0x00007fffffff5660, n_params=1) at gobject.c:1817 frame #8: libgobject-2.0.so.0`g_object_new_valist(object_type=35074244032, first_property_name="", var_args=0x00007fffffff5920) at gobject.c:2042 frame #9: libgobject-2.0.so.0`g_object_new(object_type=35074244032, first_property_name="") at gobject.c:1626 frame #10: libgio-2.0.so.0`g_settings_new(schema_id="") at gsettings.c:965 frame #11: libxul.so`mozilla::intl::OSPreferences::ReadDateTimePattern(mozilla::intl::OSPreferences::DateTimeFormatStyle, mozilla::intl::OSPreferences::ReadDateTimePattern, nsACString const&, nsAString&) [inlined] HourCycle(void) at OSPreferences_gtk.cpp:64 frame #12: libxul.so`mozilla::intl::OSPreferences::ReadDateTimePattern(this=0x0000000817a46a80, aDateStyle=<unavailable>, aTimeStyle=<unavailable>, aLocale=0x000000080186ba30, aRetVal=0x000000080186ba00) at OSPreferences_gtk.cpp:119 frame #13: libxul.so`mozilla::intl::OSPreferences::GetDateTimePattern(this=<unavailable>, aDateFormatStyle=0, aTimeFormatStyle=1, aLocale=0x000000080186ba30, aRetVal=0x000000080186ba00) at OSPreferences.cpp:382 frame #14: libxul.so`NS_InvokeByIndex at xptcinvoke_asm_x86_64_unix.S:129 frame #15: libxul.so`XPCWrappedNative::CallMethod(XPCCallContext&, XPCWrappedNative::CallMode) [inlined] CallMethodHelper::Invoke(void) at XPCWrappedNative.cpp:2010 frame #16: libxul.so`XPCWrappedNative::CallMethod(XPCCallContext&, XPCWrappedNative::CallMode) [inlined] CallMethodHelper::Call(void) at XPCWrappedNative.cpp:1329 frame #17: libxul.so`XPCWrappedNative::CallMethod(ccx=<unavailable>, mode=<unavailable>) at XPCWrappedNative.cpp:1296 frame #18: libxul.so`XPC_WN_CallMethod(cx=<unavailable>, argc=3, vp=0x0000000814f61a80) at XPCWrappedNativeJSOps.cpp:983 frame #19: libxul.so`js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct) [inlined] js::CallJSNative(native=(libxul.so`XPC_WN_CallMethod(JSContext*, unsigned int, JS::Value*) at XPCWrappedNativeJSOps.cpp:962))(JSContextunsigned intJS::Value*), JSContext*::CallArgs const&) at jscntxtinlines.h:291 frame #20: libxul.so`js::InternalCallOrConstruct(cx=0x0000000812c99000, args=0x00007fffffff60b8,construct=<unavailable>) at Interpreter.cpp:455 frame #21: libxul.so`Interpret(JSContext*, js::RunState&) [inlined] js::CallFromStack(cx=0x0000000812c99000) at Interpreter.cpp:506 frame #22: libxul.so`Interpret(cx=<unavailable>, state=<unavailable>) at Interpreter.cpp:3010 frame #23: libxul.so`js::RunScript(cx=0x0000000812c99000, state=0x00007fffffff6470) at Interpreter.cpp:395 frame #24: libxul.so`js::InternalCallOrConstruct(cx=0x0000000812c99000, args=0x00007fffffff6518,construct=NO_CONSTRUCT) at Interpreter.cpp:473 frame #25: libxul.so`JS::Handle<JSContext*::Value> js::Call(cx=<unavailable>, fval=<unavailable>, thisv=<unavailable>, args=0x00007fffffff6518, rval=<unavailable>) at Interpreter.cpp:519 frame #26: libxul.so`JSObject<JS::Handle::Value> JS_CallFunctionValue(cx=<unavailable>, obj=<unavailable>, fval=<unavailable>, args=0x00007fffffff6950, rval=<unavailable>) at jsapi.cpp:2826 frame #27: libxul.so`nsXPCWrappedJSClass::CallMethod(this=<unavailable>, wrapper=<unavailable>, methodIndex=<unavailable>, info_=<unavailable>, nativeParams=0x00007fffffff69e0) at XPCWrappedJSClass.cpp:1214 frame #28: libxul.so`::PrepareAndDispatch(self=<unavailable>, methodIndex=<unavailable>, args=<unavailable>, gpregs=0x00007fffffff6ac0, fpregs=0x00007fffffff6af0) at xptcstubs_x86_64_linux.cpp:120 frame #29: 0x000000080b0ea7fb libxul.so`SharedStub + 91 frame #30: libxul.so`NS_InvokeByIndex at xptcinvoke_asm_x86_64_unix.S:129 frame #31: libxul.so`XPCWrappedNative::CallMethod(XPCCallContext&, XPCWrappedNative::CallMode) [inlined] CallMethodHelper::Invoke(void) at XPCWrappedNative.cpp:2010 frame #32: libxul.so`XPCWrappedNative::CallMethod(XPCCallContext&, XPCWrappedNative::CallMode) [inlined] CallMethodHelper::Call(void) at XPCWrappedNative.cpp:1329 frame #33: libxul.so`XPCWrappedNative::CallMethod(ccx=<unavailable>, mode=<unavailable>) at XPCWrappedNative.cpp:1296 frame #34: libxul.so`XPC_WN_CallMethod(cx=<unavailable>, argc=2, vp=0x0000000814f619a8) at XPCWrappedNativeJSOps.cpp:983 frame #35: libxul.so`js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct) [inlined] js::CallJSNative(native=(libxul.so`XPC_WN_CallMethod(JSContext*, unsigned int, JS::Value*) at XPCWrappedNativeJSOps.cpp:962))(JSContextunsigned intJS::Value*), JSContext*::CallArgs const&) at jscntxtinlines.h:291 frame #36: libxul.so`js::InternalCallOrConstruct(cx=0x0000000812c99000, args=0x00007fffffff7158,construct=<unavailable>) at Interpreter.cpp:455 frame #37: libxul.so`Interpret(JSContext*, js::RunState&) [inlined] js::CallFromStack(cx=0x0000000812c99000) at Interpreter.cpp:506 frame #38: libxul.so`Interpret(cx=<unavailable>, state=<unavailable>) at Interpreter.cpp:3010 frame #39: libxul.so`js::RunScript(cx=0x0000000812c99000, state=0x00007fffffff7510) at Interpreter.cpp:395 frame #40: libxul.so`js::InternalCallOrConstruct(cx=0x0000000812c99000, args=0x00007fffffff75b0,construct=NO_CONSTRUCT) at Interpreter.cpp:473 frame #41: libxul.so`JS::Handle<JSContext*::Value> js::Call(cx=<unavailable>, fval=<unavailable>, thisv=<unavailable>, args=0x00007fffffff75b0, rval=<unavailable>) at Interpreter.cpp:519 frame #42: libxul.so`JSContext*::CallArgs const& js::Wrapper::call(this=<unavailable>, cx=0x0000000812c99000, proxy=<unavailable>, args=0x00007fffffff7738) const at Wrapper.cpp:165 frame #43: libxul.so`JSContext*::CallArgs const& js::CrossCompartmentWrapper::call(this=0x00000008103f5158, cx=0x0000000812c99000, wrapper=<unavailable>, args=0x00007fffffff7738) const at CrossCompartmentWrapper.cpp:353 frame #44: libxul.so`JSContext*::CallArgs const& js::Proxy::call(cx=0x0000000812c99000, proxy=<unavailable>, args=0x00007fffffff7738) at Proxy.cpp:464 frame #45: libxul.so`js::proxy_Call(cx=<unavailable>, argc=<unavailable>, vp=<unavailable>) at Proxy.cpp:716 frame #46: libxul.so`js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct) [inlined] js::CallJSNative(native=<unavailable>)(JSContextunsigned intJS::Value*), JSContext*::CallArgs const&) at jscntxtinlines.h:291 frame #47: libxul.so`js::InternalCallOrConstruct(cx=0x0000000812c99000, args=0x00007fffffff7a28,construct=<unavailable>) at Interpreter.cpp:437 frame #48: libxul.so`Interpret(JSContext*, js::RunState&) [inlined] js::CallFromStack(cx=0x0000000812c99000) at Interpreter.cpp:506 frame #49: libxul.so`Interpret(cx=<unavailable>, state=<unavailable>) at Interpreter.cpp:3010 frame #50: libxul.so`js::RunScript(cx=0x0000000812c99000, state=0x00007fffffff7de0) at Interpreter.cpp:395 frame #51: libxul.so`js::InternalCallOrConstruct(cx=0x0000000812c99000, args=0x00007fffffff7e68,construct=NO_CONSTRUCT) at Interpreter.cpp:473 frame #52: libxul.so`JS::Handle<JSContext*::Value> js::CallGetter(JSContext*, JS::Handle<JSContext*::Value>(JSContext*::MutableHandle<JSContext*::Value>) [inlined] InternalCall(cx=0x0000000812c99000) at Interpreter.cpp:500 frame #53: libxul.so`JS::Handle<JSContext*::Value> js::CallGetter(JSContext*, JS::Handle<JSContext*::Value>(JSContext*::MutableHandle<JSContext*::Value>) [inlined] JS::Handle<JSContext*::Value> js::Call(JSContext*, JS::Handle<JSContext*::Value>(js::AnyInvokeArgs const&, JSContext*::MutableHandle<JSContext*::Value>) at Interpreter.cpp:519 frame #54: libxul.so`JS::Handle<JSContext*::Value> js::CallGetter(cx=0x0000000812c99000, thisv=JS::HandleValue @ r15, getter=JS::HandleValue @ r12, rval=JS::MutableHandleValue @ r14) at Interpreter.cpp:634 frame #55: libxul.so`JSContext*::MutableHandle<JSContext*::Value> JS::Handle<JSContext*::Value> js::NativeGetProperty(JSContext*, JS::Handle<js::NativeObject*>(JS::Handle<jsid>() at NativeObject.cpp:1788 frame #56: libxul.so`JSContext*::MutableHandle<JSContext*::Value> JS::Handle<JSContext*::Value> js::NativeGetProperty(JSContext*, JS::Handle<js::NativeObject*>(JS::Handle<jsid>() [inlined] _ZL19GetExistingPropertyILN2js7AllowGCE1EEbP9JSContextNS0_11MaybeRootedIN2JS5ValueEXT_EE10HandleTypeENS4_IPNS0_12NativeObjectEXT_EE10HandleTypeENS4_IPNS0_5ShapeEXT_EE10HandleTypeENS7_17MutableHandleTypeE at NativeObject.cpp:1836 frame #57: libxul.so`JSContext*::MutableHandle<JSContext*::Value> JS::Handle<JSContext*::Value> js::NativeGetProperty(JSContext*, JS::Handle<js::NativeObject*>(JS::Handle<jsid>() at NativeObject.cpp:2067 frame #58: libxul.so`JSContext*::MutableHandle<JSContext*::Value> JS::Handle<JSContext*::Value> js::NativeGetProperty(cx=0x0000000812c99000, obj=js::HandleNativeObject @ 0x00007fffffff7f00, receiver=JS::HandleValue @ 0x00007fffffff7f08, id=<unavailable>, vp=JS::MutableHandleValue @ 0x00007fffffff7f90) at NativeObject.cpp:2101 frame #59: libxul.so`JSContext*::MutableHandle<JSContext*::Value> JS::Handle<JSContext*::Value> js::Wrapper::get(JSContext*, JS::Handle<JSObject*>(JS::Handle<jsid>() const [inlined] JSContext*::MutableHandle<JSContext*::Value> JS::Handle<JSContext*::Value> js::GetProperty(cx=<unavailable>) at NativeObject.h:1440 frame #60: libxul.so`JSContext*::MutableHandle<JSContext*::Value> JS::Handle<JSContext*::Value> js::Wrapper::get(this=<unavailable>, cx=<unavailable>, proxy=<unavailable>, receiver=<unavailable>, id=<unavailable>, vp=<unavailable>) const at Wrapper.cpp:143 frame #61: libxul.so`JSContext*::MutableHandle<JSContext*::Value> JS::Handle<JSContext*::Value> js::CrossCompartmentWrapper::get(this=0x00000008103f5158, cx=0x0000000812c99000, wrapper=<unavailable>, receiver=<unavailable>, id=<unavailable>, vp=JS::MutableHandleValue @ 0x00007fffffff8000) const atCrossCompartmentWrapper.cpp:226 frame #62: libxul.so`JSContext*::MutableHandle<JSContext*::Value> JS::Handle<JSContext*::Value> js::Proxy::get(cx=0x0000000812c99000, proxy=<unavailable>, receiver_=<unavailable>, id=JS::HandleId @0x00007fffffff80b8, vp=<unavailable>) at Proxy.cpp:325 frame #63: libxul.so`JSContext*::MutableHandle<JSContext*::Value> JS::Handle<JSContext*::Value> js::NativeGetProperty(JSContext*, JS::Handle<js::NativeObject*>(JS::Handle<jsid>() at NativeObject.h:1439 frame #64: libxul.so`JSContext*::MutableHandle<JSContext*::Value> JS::Handle<JSContext*::Value> js::NativeGetProperty(JSContext*, JS::Handle<js::NativeObject*>(JS::Handle<jsid>() [inlined] IsNameLookup JSObject<jsid> GeneralizedGetProperty(obj=<unavailable>, nameLookup=NotNameLookup) at NativeObject.cpp:2024 frame #65: libxul.so`JSContext*::MutableHandle<JSContext*::Value> JS::Handle<JSContext*::Value> js::NativeGetProperty(JSContext*, JS::Handle<js::NativeObject*>(JS::Handle<jsid>() at NativeObject.cpp:2091 frame #66: libxul.so`JSContext*::MutableHandle<JSContext*::Value> JS::Handle<JSContext*::Value> js::NativeGetProperty(cx=0x0000000812c99000, obj=js::HandleNativeObject @ 0x00007fffffff8120, receiver=JS::HandleValue @ 0x00007fffffff8128, id=JS::HandleId @ rbx, vp=JS::MutableHandleValue @ 0x00007fffffff81b0) at NativeObject.cpp:2101 frame #67: libxul.so`JSContext*::MutableHandle<JSContext*::Value> JS::Handle<JSContext*::Value> js::Wrapper::get(JSContext*, JS::Handle<JSObject*>(JS::Handle<jsid>() const [inlined] JSContext*::MutableHandle<JSContext*::Value> JS::Handle<JSContext*::Value> js::GetProperty(cx=<unavailable>) at NativeObject.h:1440 frame #68: libxul.so`JSContext*::MutableHandle<JSContext*::Value> JS::Handle<JSContext*::Value> js::Wrapper::get(this=<unavailable>, cx=<unavailable>, proxy=<unavailable>, receiver=<unavailable>, id=<unavailable>, vp=<unavailable>) const at Wrapper.cpp:143 frame #69: libxul.so`JSContext*::MutableHandle<JSContext*::Value> JS::Handle<JSContext*::Value> js::CrossCompartmentWrapper::get(this=0x00000008103f5158, cx=0x0000000812c99000, wrapper=<unavailable>, receiver=<unavailable>, id=<unavailable>, vp=JS::MutableHandleValue @ 0x00007fffffff8220) const atCrossCompartmentWrapper.cpp:226 frame #70: libxul.so`JSContext*::MutableHandle<JSContext*::Value> JS::Handle<JSContext*::Value> js::Proxy::get(cx=0x0000000812c99000, proxy=<unavailable>, receiver_=<unavailable>, id=JS::HandleId @0x00007fffffff82d8, vp=<unavailable>) at Proxy.cpp:325 frame #71: libxul.so`JS::Handle<js::PropertyName*> js::GetProperty(JSContext*, JS::Handle<JSContext*::Value>(JSContext*::MutableHandle<JSContext*::Value>) at NativeObject.h:1439 frame #72: libxul.so`JS::Handle<js::PropertyName*> js::GetProperty(JSContext*, JS::Handle<JSContext*::Value>(JSContext*::MutableHandle<JSContext*::Value>) [inlined] JS::Handle<JSContext*::Value> js::GetProperty(cx=0x0000000812c99000, obj=<unavailable>, receiver=<unavailable>) at jsobj.h:845 frame #73: libxul.so`JS::Handle<js::PropertyName*> js::GetProperty(cx=0x0000000812c99000, v=<unavailable>, name=<unavailable>, vp=<unavailable>) at Interpreter.cpp:4386 frame #74: libxul.so`Interpret(JSContext*, js::RunState&) [inlined] _ZL20GetPropertyOperationP9JSContextPN2js16InterpreterFrameEN2JS6HandleIP8JSScriptEEPhNS4_13MutableHandleINS4_5ValueEEESC_(cx=0x0000000812c99000, fp=<unavailable>, pc=<unavailable>) at Interpreter.cpp:193 frame #75: libxul.so`Interpret(cx=<unavailable>, state=<unavailable>) at Interpreter.cpp:2725 frame #76: libxul.so`js::RunScript(cx=0x0000000812c99000, state=0x00007fffffff8980) at Interpreter.cpp:395 frame #77: libxul.so`js::InternalCallOrConstruct(cx=0x0000000812c99000, args=0x00007fffffff8c18,construct=NO_CONSTRUCT) at Interpreter.cpp:473 frame #78: libxul.so`Interpret(JSContext*, js::RunState&) [inlined] js::CallFromStack(cx=0x0000000812c99000) at Interpreter.cpp:506 frame #79: libxul.so`Interpret(cx=<unavailable>, state=<unavailable>) at Interpreter.cpp:3010 frame #80: libxul.so`js::RunScript(cx=0x0000000812c99000, state=0x00007fffffff8fd0) at Interpreter.cpp:395 frame #81: libxul.so`js::InternalCallOrConstruct(cx=0x0000000812c99000, args=0x00007fffffff9070,construct=NO_CONSTRUCT) at Interpreter.cpp:473 frame #82: libxul.so`JS::Handle<JSContext*::Value> js::Call(cx=<unavailable>, fval=<unavailable>, thisv=<unavailable>, args=0x00007fffffff9070, rval=<unavailable>) at Interpreter.cpp:519 frame #83: libxul.so`JSContext*::CallArgs const& js::Wrapper::call(this=<unavailable>, cx=0x0000000812c99000, proxy=<unavailable>, args=0x00007fffffff91f8) const at Wrapper.cpp:165 frame #84: libxul.so`JSContext*::CallArgs const& js::CrossCompartmentWrapper::call(this=0x00000008103f5158, cx=0x0000000812c99000, wrapper=<unavailable>, args=0x00007fffffff91f8) const at CrossCompartmentWrapper.cpp:353 frame #85: libxul.so`JSContext*::CallArgs const& js::Proxy::call(cx=0x0000000812c99000, proxy=<unavailable>, args=0x00007fffffff91f8) at Proxy.cpp:464 frame #86: libxul.so`js::proxy_Call(cx=<unavailable>, argc=<unavailable>, vp=<unavailable>) at Proxy.cpp:716 frame #87: libxul.so`js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct) [inlined] js::CallJSNative(native=<unavailable>)(JSContextunsigned intJS::Value*), JSContext*::CallArgs const&) at jscntxtinlines.h:291 frame #88: libxul.so`js::InternalCallOrConstruct(cx=0x0000000812c99000, args=0x00007fffffff94e8,construct=<unavailable>) at Interpreter.cpp:437 frame #89: libxul.so`Interpret(JSContext*, js::RunState&) [inlined] js::CallFromStack(cx=0x0000000812c99000) at Interpreter.cpp:506 frame #90: libxul.so`Interpret(cx=<unavailable>, state=<unavailable>) at Interpreter.cpp:3010 frame #91: libxul.so`js::RunScript(cx=0x0000000812c99000, state=0x00007fffffff98a0) at Interpreter.cpp:395 frame #92: libxul.so`js::InternalCallOrConstruct(cx=0x0000000812c99000, args=0x00007fffffff9b38,construct=NO_CONSTRUCT) at Interpreter.cpp:473 frame #93: libxul.so`Interpret(JSContext*, js::RunState&) [inlined] js::CallFromStack(cx=0x0000000812c99000) at Interpreter.cpp:506 frame #94: libxul.so`Interpret(cx=<unavailable>, state=<unavailable>) at Interpreter.cpp:3010 frame #95: libxul.so`js::RunScript(cx=0x0000000812c99000, state=0x00007fffffff9ef0) at Interpreter.cpp:395 frame #96: libxul.so`js::InternalCallOrConstruct(cx=0x0000000812c99000, args=0x00007fffffff9f90,construct=NO_CONSTRUCT) at Interpreter.cpp:473 frame #97: libxul.so`JS::Handle<JSContext*::Value> js::Call(cx=<unavailable>, fval=<unavailable>, thisv=<unavailable>, args=0x00007fffffff9f90, rval=<unavailable>) at Interpreter.cpp:519 frame #98: libxul.so`JSContext*::CallArgs const& js::Wrapper::call(this=<unavailable>, cx=0x0000000812c99000, proxy=<unavailable>, args=0x00007fffffffa118) const at Wrapper.cpp:165 frame #99: libxul.so`JSContext*::CallArgs const& js::CrossCompartmentWrapper::call(this=0x00000008103f5158, cx=0x0000000812c99000, wrapper=<unavailable>, args=0x00007fffffffa118) const at CrossCompartmentWrapper.cpp:353 frame #100: libxul.so`JSContext*::CallArgs const& js::Proxy::call(cx=0x0000000812c99000, proxy=<unavailable>, args=0x00007fffffffa118) at Proxy.cpp:464 frame #101: libxul.so`js::proxy_Call(cx=<unavailable>, argc=<unavailable>, vp=<unavailable>) at Proxy.cpp:716 frame #102: libxul.so`js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct) [inlined] js::CallJSNative(native=<unavailable>)(JSContextunsigned intJS::Value*), JSContext*::CallArgs const&) at jscntxtinlines.h:291 frame #103: libxul.so`js::InternalCallOrConstruct(cx=0x0000000812c99000, args=0x00007fffffffa408, construct=<unavailable>) at Interpreter.cpp:437 frame #104: libxul.so`Interpret(JSContext*, js::RunState&) [inlined] js::CallFromStack(cx=0x0000000812c99000) at Interpreter.cpp:506 frame #105: libxul.so`Interpret(cx=<unavailable>, state=<unavailable>) at Interpreter.cpp:3010 frame #106: libxul.so`js::RunScript(cx=0x0000000812c99000, state=0x00007fffffffa7c0) at Interpreter.cpp:395 frame #107: libxul.so`js::InternalCallOrConstruct(cx=0x0000000812c99000, args=0x00007fffffffaa58, construct=NO_CONSTRUCT) at Interpreter.cpp:473 frame #108: libxul.so`Interpret(JSContext*, js::RunState&) [inlined] js::CallFromStack(cx=0x0000000812c99000) at Interpreter.cpp:506 frame #109: libxul.so`Interpret(cx=<unavailable>, state=<unavailable>) at Interpreter.cpp:3010 frame #110: libxul.so`js::RunScript(cx=0x0000000812c99000, state=0x00007fffffffae10) at Interpreter.cpp:395 frame #111: libxul.so`js::InternalCallOrConstruct(cx=0x0000000812c99000, args=0x00007fffffffb0a8, construct=NO_CONSTRUCT) at Interpreter.cpp:473 frame #112: libxul.so`Interpret(JSContext*, js::RunState&) [inlined] js::CallFromStack(cx=0x0000000812c99000) at Interpreter.cpp:506 frame #113: libxul.so`Interpret(cx=<unavailable>, state=<unavailable>) at Interpreter.cpp:3010 frame #114: libxul.so`js::RunScript(cx=0x0000000812c99000, state=0x00007fffffffb460) at Interpreter.cpp:395 frame #115: libxul.so`js::InternalCallOrConstruct(cx=0x0000000812c99000, args=0x00007fffffffb6f8, construct=NO_CONSTRUCT) at Interpreter.cpp:473 frame #116: libxul.so`Interpret(JSContext*, js::RunState&) [inlined] js::CallFromStack(cx=0x0000000812c99000) at Interpreter.cpp:506 frame #117: libxul.so`Interpret(cx=<unavailable>, state=<unavailable>) at Interpreter.cpp:3010 frame #118: libxul.so`js::RunScript(cx=0x0000000812c99000, state=0x00007fffffffbab0) at Interpreter.cpp:395 frame #119: libxul.so`js::InternalCallOrConstruct(cx=0x0000000812c99000, args=0x00007fffffffbb50, construct=NO_CONSTRUCT) at Interpreter.cpp:473 frame #120: libxul.so`JS::Handle<JSContext*::Value> js::Call(cx=<unavailable>, fval=<unavailable>, thisv=<unavailable>, args=0x00007fffffffbb50, rval=<unavailable>) at Interpreter.cpp:519 frame #121: libxul.so`JSContext*::CallArgs const& js::Wrapper::call(this=<unavailable>, cx=0x0000000812c99000, proxy=<unavailable>, args=0x00007fffffffbcd8) const at Wrapper.cpp:165 frame #122: libxul.so`JSContext*::CallArgs const& js::CrossCompartmentWrapper::call(this=0x00000008103f5158, cx=0x0000000812c99000, wrapper=<unavailable>, args=0x00007fffffffbcd8) const at CrossCompartmentWrapper.cpp:353 frame #123: libxul.so`JSContext*::CallArgs const& js::Proxy::call(cx=0x0000000812c99000, proxy=<unavailable>, args=0x00007fffffffbcd8) at Proxy.cpp:464 frame #124: libxul.so`js::proxy_Call(cx=<unavailable>, argc=<unavailable>, vp=<unavailable>) at Proxy.cpp:716 frame #125: libxul.so`js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct) [inlined] js::CallJSNative(native=<unavailable>)(JSContextunsigned intJS::Value*), JSContext*::CallArgs const&) at jscntxtinlines.h:291 frame #126: libxul.so`js::InternalCallOrConstruct(cx=0x0000000812c99000, args=0x00007fffffffbfc8, construct=<unavailable>) at Interpreter.cpp:437 frame #127: libxul.so`Interpret(JSContext*, js::RunState&) [inlined] js::CallFromStack(cx=0x0000000812c99000) at Interpreter.cpp:506 frame #128: libxul.so`Interpret(cx=<unavailable>, state=<unavailable>) at Interpreter.cpp:3010 frame #129: libxul.so`js::RunScript(cx=0x0000000812c99000, state=0x00007fffffffc380) at Interpreter.cpp:395 frame #130: libxul.so`js::InternalCallOrConstruct(cx=0x0000000812c99000, args=0x00007fffffffc618, construct=NO_CONSTRUCT) at Interpreter.cpp:473 frame #131: libxul.so`Interpret(JSContext*, js::RunState&) [inlined] js::CallFromStack(cx=0x0000000812c99000) at Interpreter.cpp:506 frame #132: libxul.so`Interpret(cx=<unavailable>, state=<unavailable>) at Interpreter.cpp:3010 frame #133: libxul.so`js::RunScript(cx=0x0000000812c99000, state=0x00007fffffffc9d0) at Interpreter.cpp:395 frame #134: libxul.so`js::InternalCallOrConstruct(cx=0x0000000812c99000, args=0x00007fffffffcc68, construct=NO_CONSTRUCT) at Interpreter.cpp:473 frame #135: libxul.so`Interpret(JSContext*, js::RunState&) [inlined] js::CallFromStack(cx=0x0000000812c99000) at Interpreter.cpp:506 frame #136: libxul.so`Interpret(cx=<unavailable>, state=<unavailable>) at Interpreter.cpp:3010 frame #137: libxul.so`js::RunScript(cx=0x0000000812c99000, state=0x00007fffffffd020) at Interpreter.cpp:395 frame #138: libxul.so`js::InternalCallOrConstruct(cx=0x0000000812c99000, args=0x00007fffffffd2b8, construct=NO_CONSTRUCT) at Interpreter.cpp:473 frame #139: libxul.so`Interpret(JSContext*, js::RunState&) [inlined] js::CallFromStack(cx=0x0000000812c99000) at Interpreter.cpp:506 frame #140: libxul.so`Interpret(cx=<unavailable>, state=<unavailable>) at Interpreter.cpp:3010 frame #141: libxul.so`js::RunScript(cx=0x0000000812c99000, state=0x00007fffffffd670) at Interpreter.cpp:395 frame #142: libxul.so`js::InternalCallOrConstruct(cx=0x0000000812c99000, args=0x00007fffffffd718, construct=NO_CONSTRUCT) at Interpreter.cpp:473 frame #143: libxul.so`JS::Handle<JSContext*::Value> js::Call(cx=<unavailable>, fval=<unavailable>, thisv=<unavailable>, args=0x00007fffffffd718, rval=<unavailable>) at Interpreter.cpp:519 frame #144: libxul.so`JSObject<JS::Handle::Value> JS_CallFunctionValue(cx=<unavailable>, obj=<unavailable>, fval=<unavailable>, args=0x00007fffffffdb50, rval=<unavailable>) at jsapi.cpp:2826 frame #145: libxul.so`nsXPCWrappedJSClass::CallMethod(this=<unavailable>, wrapper=<unavailable>,methodIndex=<unavailable>, info_=<unavailable>, nativeParams=0x00007fffffffdbe0) at XPCWrappedJSClass.cpp:1214 frame #146: libxul.so`::PrepareAndDispatch(self=<unavailable>, methodIndex=<unavailable>, args=<unavailable>, gpregs=0x00007fffffffdcc0, fpregs=0x00007fffffffdcf0) at xptcstubs_x86_64_linux.cpp:120 frame #147: 0x000000080b0ea7fb libxul.so`SharedStub + 91 frame #148: libxul.so`mozilla::dom::XULDocument::DoneWalking(this=0x000000081e26f400) at XULDocument.cpp:3075 frame #149: libxul.so`virtual function non-virtual override offset : -2008 mozilla::dom::XULDocument::StyleSheetLoaded(mozilla::StyleSheet*, bool, nsresult) [inlined] mozilla::dom::XULDocument::StyleSheetLoaded(mozilla::StyleSheet*, bool, nsresult) at XULDocument.cpp:3128 frame #150: libxul.so`virtual function non-virtual override offset : -2008 mozilla::dom::XULDocument::StyleSheetLoaded(this=<unavailable>, aSheet=<unavailable>, aWasAlternate=<unavailable>, aStatus=<unavailable>) at XULDocument.cpp:0 frame #151: libxul.so`mozilla::css::Loader::SheetComplete(this=0x000000081e2ae840, aLoadData=<unavailable>, aStatus=NS_OK) at Loader.cpp:1842 frame #152: libxul.so`mozilla::css::Loader::ParseSheet(this=0x000000081e2ae840, aInput=0x000000082ac56370, aLoadData=<unavailable>, aCompleted=<unavailable>) at Loader.cpp:0 frame #153: libxul.so`mozilla::css::SheetLoadData::OnStreamComplete(this=0x000000082be18500, aLoader=<unavailable>, aContext=<unavailable>, aStatus=<unavailable>, aBuffer=<unavailable>) at Loader.cpp:998 frame #154: libxul.so`nsUnicharStreamLoader::OnStopRequest(this=0x000000082ac56310, aRequest=<unavailable>, aContext=<unavailable>, aStatus=NS_OK) at nsUnicharStreamLoader.cpp:97 frame #155: libxul.so`nsBaseChannel::OnStopRequest(this=0x000000082ac5e500, request=<unavailable>, ctxt=<unavailable>, status=<unavailable>) at nsBaseChannel.cpp:853 frame #156: libxul.so`virtual function non-virtual override offset : -120 nsBaseChannel::OnStopRequest(this=<unavailable>, request=<unavailable>, ctxt=<unavailable>, status=<unavailable>) at nsBaseChannel.cpp:0 frame #157: libxul.so`nsInputStreamPump::OnStateStop(this=0x000000082bf385e0) at nsInputStreamPump.cpp:718 frame #158: libxul.so`nsInputStreamPump::OnInputStreamReady(this=0x000000082bf385e0, stream=<unavailable>) at nsInputStreamPump.cpp:436 frame #159: libxul.so`nsInputStreamReadyEvent::Run(this=0x000000081df97810) at nsStreamUtils.cpp:96 frame #160: libxul.so`nsThread::ProcessNextEvent(this=0x000000080187f8c0, aMayWait=<unavailable>, aResult=0x00007fffffffe357) at nsThread.cpp:1269 frame #161: libxul.so`NS_ProcessNextEvent(aThread=<unavailable>, aMayWait=false) at nsThreadUtils.cpp:389 frame #162: libxul.so`mozilla::ipc::MessagePump::Run(this=0x00000008018dcb40, aDelegate=0x000000080187f780) at MessagePump.cpp:96 frame #163: libxul.so`MessageLoop::Run(void) [inlined] MessageLoop::RunInternal(this=<unavailable>) at message_loop.cc:238 frame #164: libxul.so`MessageLoop::Run(void) [inlined] MessageLoop::RunHandler(void) at message_loop.cc:231 frame #165: libxul.so`MessageLoop::Run(this=<unavailable>) at message_loop.cc:211 frame #166: libxul.so`nsBaseAppShell::Run(this=0x0000000812df6760) at nsBaseAppShell.cpp:156 frame #167: libxul.so`nsAppStartup::Run(this=0x00000008018d4800) at nsAppStartup.cpp:283 frame #168: libxul.so`XREMain::XRE_mainRun(this=<unavailable>) at nsAppRunner.cpp:4538 frame #169: libxul.so`XREMain::XRE_main(this=0x00007fffffffe5c0, argc=<unavailable>, argv=<unavailable>, aConfig=<unavailable>) at nsAppRunner.cpp:4718 frame #170: libxul.so`XRE_main(argc=<unavailable>, argv=<unavailable>, aConfig=<unavailable>) atnsAppRunner.cpp:4811 frame #171: firefox`main [inlined] do_main(argc=<unavailable>, argv=<unavailable>, envp=<unavailable>) at nsBrowserApp.cpp:236 frame #172: firefox`main(argc=<unavailable>, argv=<unavailable>, envp=<unavailable>) at nsBrowserApp.cpp:307 frame #173: firefox`_start(ap=<unavailable>, cleanup=<unavailable>) at crt1.c:72
http://searchfox.org/mozilla-central/source/intl/locale/gtk/OSPreferences_gtk.cpp#64 is ``` GSettings* settings = g_settings_new(schema); ``` any idea why would it crash?
Flags: needinfo?(jfkthame)
On minimal desktops gsettings-desktop-schemas may not be installed which makes g_settings_new() abort. nsGSettingsService handles this by querying available schemas. http://searchfox.org/mozilla-central/rev/24eec01c4e43/toolkit/system/gnome/nsGSettingsService.cpp#338
this feels like a weird API. I'll take this. Thanks for reporting :)
Assignee: nobody → gandalf
Status: NEW → ASSIGNED
Flags: needinfo?(jfkthame)
Here's what I have (just in case): $ ./g_settings_list_schemas-test org.gtk.Settings.ColorChooser org.gtk.Settings.Debug org.gtk.Settings.FileChooser org.gtk.Demo (In reply to Zibi Braniecki [:gandalf][:zibi] from comment #3) > this feels like a weird API. Not like querying ad hoc environment variables to check for Unity schema is better. ;)
Well, I'd actually expect that API to just return false if it cannot find the right schema, not crash the app.
Just FYI, see https://bugzilla.gnome.org/show_bug.cgi?id=722134. But it doesn't seem to have made any progress. More background in https://bugzilla.gnome.org/show_bug.cgi?id=622554, https://bugzilla.gnome.org/show_bug.cgi?id=655366; during the period between these two, I think this would have behaved as we expected here, but they reverted that. There's also some old discussion at http://gtk.10911.n7.nabble.com/About-gsettings-aborting-on-unkown-schemas-td21999.html.
Comment on attachment 8858592 [details] Bug 1356718 - Query gtk settings schemas to avoid crashing when schema is missing. I don't like the patch, and it shows a warning: 0:02.10 /home/zbraniecki/projects/mozilla/mozilla-unified/intl/locale/gtk/OSPreferences_gtk.cpp: In function ‘int HourCycle()’: 0:02.10 /home/zbraniecki/projects/mozilla/mozilla-unified/intl/locale/gtk/OSPreferences_gtk.cpp:93:27: warning: ‘settings’ may be used uninitialized in this function [-Wmaybe-uninitialized] but I'm not sure how to improve this code without any bigger refactors :(
Comment on attachment 8858592 [details] Bug 1356718 - Query gtk settings schemas to avoid crashing when schema is missing. https://reviewboard.mozilla.org/r/130588/#review133196 ::: intl/locale/gtk/OSPreferences_gtk.cpp:65 (Diff revision 1) > schema = "org.gnome.desktop.interface"; > key = "clock-format"; > } > > - GSettings* settings = g_settings_new(schema); > + const char * const *schemas = g_settings_list_schemas(); > + GSettings* settings; Why don't you follow Clang-suggested fix? Don't forget `MOZ_AUTOMATION` implicitly sets `--enable-warnings-as-errors`. ``` intl/locale/gtk/OSPreferences_gtk.cpp:67:24: error: variable 'settings' is used uninitialized whenever 'for' loop exits because its condition is false [-Werror,-Wsometimes-uninitialized] for (uint32_t i = 0; schemas[i] != nullptr; i++) { ^~~~~~~~~~~~~~~~~~~~~ intl/locale/gtk/OSPreferences_gtk.cpp:74:7: note: uninitialized use occurs here if (settings) { ^~~~~~~~ intl/locale/gtk/OSPreferences_gtk.cpp:67:24: note: remove the condition if it is always true for (uint32_t i = 0; schemas[i] != nullptr; i++) { ^~~~~~~~~~~~~~~~~~~~~ intl/locale/gtk/OSPreferences_gtk.cpp:65:22: note: initialize the variable 'settings' to silence this warning GSettings* settings; ^ = nullptr 1 error generated. ``` ::: intl/locale/gtk/OSPreferences_gtk.cpp:93 (Diff revision 1) > rval = 24; > } > } > g_variant_unref(value); > } > - g_object_unref(settings); > + g_object_unref(settings); Whitespace regression?
Updated the patch, no warnings in gcc.
Comment on attachment 8858592 [details] Bug 1356718 - Query gtk settings schemas to avoid crashing when schema is missing. Thanks. It no longer crashes with the patch.
Attachment #8858592 - Flags: feedback+
Crash Signature: [@ mozilla::intl::OSPreferences::ReadDateTimePattern] → [@ mozilla::intl::OSPreferences::ReadDateTimePattern] [@ libglib-2.0.so.0.5000.0@0x4e3c1 ] [@ libglib-2.0.so.0.4600.2@0x4eea3 ] [@ libglib-2.0.so.0.5000.3@0x50011 ]
Re-adjusting bug deps to when the code was introduced, not the first use.
Blocks: 1308329
No longer blocks: 1354442
Crash Signature: [@ mozilla::intl::OSPreferences::ReadDateTimePattern] [@ libglib-2.0.so.0.5000.0@0x4e3c1 ] [@ libglib-2.0.so.0.4600.2@0x4eea3 ] [@ libglib-2.0.so.0.5000.3@0x50011 ] → [@ libglib-2.0.so.0.4600.2@0x4eea3 ] [@ libglib-2.0.so.0.5000.0@0x4e3c1 ] [@ libglib-2.0.so.0.5000.3@0x50011 ]
OS: Unspecified → Linux
Summary: Crash when trying to view recent downloads (arrow button) → Crash in mozilla::intl::OSPreferences::ReadDateTimePattern when trying to view recent downloads (arrow button)
Component: Downloads API → Internationalization
Product: Toolkit → Core
Crash Signature: [@ libglib-2.0.so.0.4600.2@0x4eea3 ] [@ libglib-2.0.so.0.5000.0@0x4e3c1 ] [@ libglib-2.0.so.0.5000.3@0x50011 ] → [@ libglib-2.0.so.0.4600.2@0x4eea3 ] [@ libglib-2.0.so.0.5000.0@0x4e3c1 ] [@ libglib-2.0.so.0.5000.2@0x4f731 ] [@ libglib-2.0.so.0.5000.3@0x50011 ] [@ libglib-2.0.so.0.5100.0@0x4e7c1 ] [@ libglib-2.0.so.0.5104.0@0x4e891 ] [@ libglib-2.0.so.0.5200.1@…
Comment on attachment 8858592 [details] Bug 1356718 - Query gtk settings schemas to avoid crashing when schema is missing. https://reviewboard.mozilla.org/r/130588/#review133336 Looks OK. Just FTR, I notice that g_settings_list_schemas is deprecated according to current Glib documentation; see https://developer.gnome.org/gio/stable/GSettings.html#g-settings-list-schemas. However, we still support older Glib versions, and I don't think this case justifies writing multiple codepaths and doing runtime version testing to use newer APIs when available; this should still work, despite being deprecated. So just noting this as an observation. Maybe some day we'll update this, when we require a minimum Glib version 2.40 or something like that.
Attachment #8858592 - Flags: review?(jfkthame) → review+
Pushed by zbraniecki@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/10e47c8ec779 Query gtk settings schemas to avoid crashing when schema is missing. r=jfkthame
Added a comment about the deprecation. Thanks Jan and Jonathan!
Status: ASSIGNED → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla55
Please request Aurora approval on this when you get a chance.
Flags: needinfo?(gandalf)
Jan, can you confirm that the patch fixes the bug?
Flags: needinfo?(gandalf) → needinfo?(jbeich)
(In reply to Zibi Braniecki [:gandalf][:zibi] from comment #20) > Jan, can you confirm that the patch fixes the bug? See comment 12. mozilla-central without patches no longer crashes. (In reply to Ryan VanderMeulen [:RyanVM] from comment #19) > Please request Aurora approval on this when you get a chance. Agree, some other change may accidentally expose the crash.
Flags: needinfo?(jbeich) → needinfo?(gandalf)
Crash Signature: [@ libglib-2.0.so.0.4600.2@0x4eea3 ] [@ libglib-2.0.so.0.5000.0@0x4e3c1 ] [@ libglib-2.0.so.0.5000.2@0x4f731 ] [@ libglib-2.0.so.0.5000.3@0x50011 ] [@ libglib-2.0.so.0.5100.0@0x4e7c1 ] [@ libglib-2.0.so.0.5104.0@0x4e891 ] [@ libglib-2.0.so.0.5200.1@… → [@ libglib-2.0.so.0.4600.2@0x4eea3 ] [@ libglib-2.0.so.0.4800.2@0x507c0 ] [@ libglib-2.0.so.0.5000.0@0x4e3c1 ] [@ libglib-2.0.so.0.5000.2@0x4f731 ] [@ libglib-2.0.so.0.5000.3@0x50011 ] [@ libglib-2.0.so.0.5100.0@0x4e7c1 ] [@ libglib-2.0.so.0.5104.0@…
Comment on attachment 8858592 [details] Bug 1356718 - Query gtk settings schemas to avoid crashing when schema is missing. Approval Request Comment [Feature/Bug causing the regression]: bug 1308329 [User impact if declined]: potential crashes on some minimalist version of gtk setup [Is this code covered by automated tests?]: no [Has the fix been verified in Nightly?]: yes [Needs manual test from QE? If yes, steps to reproduce]: no [List of other uplifts needed for the feature/fix]: none [Is the change risky?]: no [Why is the change risky/not risky?]: Because it reuses the code we already have and it's only affecting our gtk builds. [String changes made/needed]: none
Flags: needinfo?(gandalf)
Attachment #8858592 - Flags: approval-mozilla-aurora?
Comment on attachment 8858592 [details] Bug 1356718 - Query gtk settings schemas to avoid crashing when schema is missing. Fix a crash. Aurora54+.
Attachment #8858592 - Flags: approval-mozilla-aurora? → approval-mozilla-aurora+
Crash Signature: libglib-2.0.so.0.5104.0@0x4e891 ] [@ libglib-2.0.so.0.5200.1@0x4f901 ] [@ libglib-2.0.so.0.5200.1@0x4fc31 ] → libglib-2.0.so.0.5104.0@0x4e891 ] [@ libglib-2.0.so.0.5200.1@0x4e631 ] [@ libglib-2.0.so.0.5200.1@0x4f901 ] [@ libglib-2.0.so.0.5200.1@0x4fc31 ]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: