Closed Bug 1952364 Opened 5 months ago Closed 9 days ago

Intermittent Assertion failure: !aOther.IsNull() (Cannot compute with aOther null value), at /builds/worker/workspace/obj-build/dist/include/mozilla/TimeStamp.h:496

Categories

(Core :: Widget: Gtk, defect, P5)

defect

Tracking

()

RESOLVED FIXED
143 Branch
Tracking Status
firefox-esr115 --- wontfix
firefox-esr128 --- wontfix
firefox-esr140 --- fix-optional
firefox141 --- wontfix
firefox142 --- fixed
firefox143 --- fixed

People

(Reporter: intermittent-bug-filer, Assigned: canova)

References

(Regression)

Details

(Keywords: assertion, intermittent-failure, regression)

Attachments

(2 files, 1 obsolete file)

Filed by: agoloman [at] mozilla.com
Parsed log: https://treeherder.mozilla.org/logviewer?job_id=497933279&repo=autoland
Full log: https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/MnzqZ0iFQDGmJkoWRjs4Pg/runs/0/artifacts/public/logs/live_backing.log


[task 2025-03-06T20:01:35.408Z] 20:01:35     INFO - TEST-START | browser/components/screenshots/tests/browser/browser_keyboard_tests.js
[task 2025-03-06T20:01:35.443Z] 20:01:35     INFO - GECKO(29999) | [Child 30293: Main Thread]: I/DocShellAndDOMWindowLeak ++DOCSHELL 7f2077785c00 == 1 [pid = 30293] [id = 0]
[task 2025-03-06T20:01:35.444Z] 20:01:35     INFO - GECKO(29999) | [Child 30293: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 1 (7f2076ec5200) [pid = 30293] [serial = 1] [outer = 0]
[task 2025-03-06T20:01:35.445Z] 20:01:35     INFO - GECKO(29999) | [Child 30293: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 2 (7f2077785800) [pid = 30293] [serial = 2] [outer = 7f2076ec5200]
[task 2025-03-06T20:01:35.516Z] 20:01:35     INFO - GECKO(29999) | [Parent 29999, Main Thread] WARNING: BounceTrackingState::OnDocumentStartRequest failed.: 'NS_SUCCEEDED(rv)', file /builds/worker/checkouts/gecko/netwerk/ipc/DocumentLoadListener.cpp:2736
[task 2025-03-06T20:01:35.534Z] 20:01:35     INFO - GECKO(29999) | [Child 30293: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 3 (7f2076b27400) [pid = 30293] [serial = 3] [outer = 7f2076ec5200]
[task 2025-03-06T20:01:35.552Z] 20:01:35     INFO - GECKO(29999) | [Child 30293, Main Thread] WARNING: NS_ENSURE_SUCCESS(rv, NS_ERROR_INVALID_ARG) failed with result 0x80520012 (NS_ERROR_FILE_NOT_FOUND): file /builds/worker/checkouts/gecko/intl/l10n/L10nRegistry.cpp:385
[task 2025-03-06T20:01:35.936Z] 20:01:35     INFO - GECKO(29999) | [29999] Assertion failure: !aOther.IsNull() (Cannot compute with aOther null value), at /builds/worker/workspace/obj-build/dist/include/mozilla/TimeStamp.h:496
[task 2025-03-06T20:01:35.939Z] 20:01:35     INFO -  Initializing stack-fixing for the first stack frame, this may take a while...
[task 2025-03-06T20:01:49.155Z] 20:01:49     INFO - GECKO(29999) | #01: mozilla::TimeStamp::operator-(mozilla::TimeStamp const&) const [mozglue/misc/TimeStamp.h:496]
[task 2025-03-06T20:01:49.156Z] 20:01:49     INFO - GECKO(29999) | #02: mozilla::SystemTimeConverter<unsigned int, mozilla::TimeStamp>::GetTimeStampFromSystemTime<mozilla::CurrentX11TimeGetter>(unsigned int, mozilla::CurrentX11TimeGetter&) [widget/SystemTimeConverter.h:108]
[task 2025-03-06T20:01:49.156Z] 20:01:49     INFO - GECKO(29999) | #03: nsWindow::OnEnterNotifyEvent(_GdkEventCrossing*) [widget/gtk/nsWindow.cpp:4218]
[task 2025-03-06T20:01:49.156Z] 20:01:49     INFO - GECKO(29999) | #04: enter_notify_event_cb(_GtkWidget*, _GdkEventCrossing*) [widget/gtk/nsWindow.cpp:8014]
[task 2025-03-06T20:01:49.160Z] 20:01:49     INFO - GECKO(29999) | #05: ??? [/usr/lib/x86_64-linux-gnu/libgtk-3.so.0 + 0x2318f7]
[task 2025-03-06T20:01:49.161Z] 20:01:49     INFO - GECKO(29999) | #06: ??? [/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 + 0x102f6]
[task 2025-03-06T20:01:49.161Z] 20:01:49     INFO - GECKO(29999) | #07: g_signal_emit_valist [/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 + 0x2b3ad]
[task 2025-03-06T20:01:49.162Z] 20:01:49     INFO - GECKO(29999) | #08: g_signal_emit [/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 + 0x2c10f]
[task 2025-03-06T20:01:49.162Z] 20:01:49     INFO - GECKO(29999) | #09: ??? [/usr/lib/x86_64-linux-gnu/libgtk-3.so.0 + 0x379534]
[task 2025-03-06T20:01:49.163Z] 20:01:49     INFO - GECKO(29999) | #10: gtk_main_do_event [/usr/lib/x86_64-linux-gnu/libgtk-3.so.0 + 0x230936]
[task 2025-03-06T20:01:49.163Z] 20:01:49     INFO - GECKO(29999) | #11: ??? [/usr/lib/x86_64-linux-gnu/libgdk-3.so.0 + 0x37765]
[task 2025-03-06T20:01:49.164Z] 20:01:49     INFO - GECKO(29999) | #12: ??? [/usr/lib/x86_64-linux-gnu/libgdk-3.so.0 + 0x67f92]
[task 2025-03-06T20:01:49.164Z] 20:01:49     INFO - GECKO(29999) | #13: g_main_context_dispatch [/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 + 0x4c537]
[task 2025-03-06T20:01:49.165Z] 20:01:49     INFO - GECKO(29999) | #14: ??? [/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 + 0x4c770]
[task 2025-03-06T20:01:49.165Z] 20:01:49     INFO - GECKO(29999) | #15: g_main_context_iteration [/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 + 0x4c7fc]
[task 2025-03-06T20:01:49.166Z] 20:01:49     INFO - GECKO(29999) | #16: nsAppShell::ProcessNextNativeEvent(bool) [widget/gtk/nsAppShell.cpp:492]
[task 2025-03-06T20:01:49.166Z] 20:01:49     INFO - GECKO(29999) | #17: nsBaseAppShell::OnProcessNextEvent(nsIThreadInternal*, bool) [widget/nsBaseAppShell.cpp:250]
[task 2025-03-06T20:01:49.167Z] 20:01:49     INFO - GECKO(29999) | #18: {virtual override thunk({offset(-8)}, nsBaseAppShell::OnProcessNextEvent(nsIThreadInternal*, bool))} [widget/nsBaseAppShell.cpp:0]
[task 2025-03-06T20:01:49.167Z] 20:01:49     INFO - GECKO(29999) | #19: nsThread::ProcessNextEvent(bool, bool*) [xpcom/threads/nsThread.cpp:1101]
[task 2025-03-06T20:01:49.168Z] 20:01:49     INFO - GECKO(29999) | #20: NS_ProcessNextEvent(nsIThread*, bool) [xpcom/threads/nsThreadUtils.cpp:480]
[task 2025-03-06T20:01:49.168Z] 20:01:49     INFO - GECKO(29999) | #21: mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) [ipc/glue/MessagePump.cpp:86]
[task 2025-03-06T20:01:49.169Z] 20:01:49     INFO - GECKO(29999) | #22: MessageLoop::Run() [ipc/chromium/src/base/message_loop.cc:345]
[task 2025-03-06T20:01:49.169Z] 20:01:49     INFO - GECKO(29999) | #23: nsBaseAppShell::Run() [widget/nsBaseAppShell.cpp:150]
[task 2025-03-06T20:01:49.170Z] 20:01:49     INFO - GECKO(29999) | #24: nsAppShell::Run() [widget/gtk/nsAppShell.cpp:470]
[task 2025-03-06T20:01:49.170Z] 20:01:49     INFO - GECKO(29999) | #25: nsAppStartup::Run() [toolkit/components/startup/nsAppStartup.cpp:292]
[task 2025-03-06T20:01:49.174Z] 20:01:49     INFO - GECKO(29999) | #26: XREMain::XRE_mainRun() [toolkit/xre/nsAppRunner.cpp:5866]
[task 2025-03-06T20:01:49.174Z] 20:01:49     INFO - GECKO(29999) | #27: XREMain::XRE_main(int, char**, mozilla::BootstrapConfig const&) [toolkit/xre/nsAppRunner.cpp:6107]
[task 2025-03-06T20:01:49.174Z] 20:01:49     INFO - GECKO(29999) | #28: XRE_main(int, char**, mozilla::BootstrapConfig const&) [toolkit/xre/nsAppRunner.cpp:6179]
[task 2025-03-06T20:01:49.174Z] 20:01:49     INFO - GECKO(29999) | #29: ??? [/builds/worker/workspace/build/application/firefox/firefox + 0x42207]
[task 2025-03-06T20:01:49.174Z] 20:01:49     INFO - GECKO(29999) | #30: __libc_start_main [/lib/x86_64-linux-gnu/libc.so.6 + 0x21b97]
[task 2025-03-06T20:01:49.174Z] 20:01:49     INFO - GECKO(29999) | #31: ??? [/builds/worker/workspace/build/application/firefox/firefox + 0x41cc9]
[task 2025-03-06T20:01:49.174Z] 20:01:49     INFO - GECKO(29999) | #32: ??? (???:???)
[task 2025-03-06T20:01:49.174Z] 20:01:49     INFO - GECKO(29999) | ExceptionHandler::GenerateDump attempting to generate:/tmp/tmp_timdsbi.mozrunner/minidumps/79af9c31-3542-d15a-ff72-e85d56d8b706.dmp
[task 2025-03-06T20:01:49.175Z] 20:01:49     INFO - GECKO(29999) | ExceptionHandler::GenerateDump cloned child 30392
[task 2025-03-06T20:01:49.175Z] 20:01:49     INFO - GECKO(29999) | ExceptionHandler::SendContinueSignalToChild sent continue signal to child
[task 2025-03-06T20:01:49.175Z] 20:01:49     INFO - GECKO(29999) | ExceptionHandler::WaitForContinueSignal waiting for continue signal...
[task 2025-03-06T20:01:49.176Z] 20:01:49     INFO - GECKO(29999) | ExceptionHandler::GenerateDump minidump generation succeeded
[task 2025-03-06T20:01:49.176Z] 20:01:49     INFO - GECKO(29999) | [Child 30363, IPC I/O Child] WARNING: [73A4E2CA3549DB4F.8A53E4534B4B9062]: Dropping message '<null>'; no connection to unknown peer 1.1: file /builds/worker/checkouts/gecko/ipc/glue/NodeController.cpp:364
[task 2025-03-06T20:01:49.177Z] 20:01:49     INFO - GECKO(29999) | [Utility 30163, IPC I/O Child] WARNING: [10646C9C0DD072E3.F4D8C381B3E0883D]: Dropping message '<null>'; no connection to unknown peer 1.1: file /builds/worker/checkouts/gecko/ipc/glue/NodeController.cpp:364
[task 2025-03-06T20:01:49.177Z] 20:01:49     INFO - GECKO(29999) | [RDD 30084, IPC I/O Child] WARNING: [101E2765F33CF31B.7DFD02A5E6839F51]: Dropping message '<null>'; no connection to unknown peer 1.1: file /builds/worker/checkouts/gecko/ipc/glue/NodeController.cpp:364
[task 2025-03-06T20:01:49.177Z] 20:01:49     INFO - GECKO(29999) | [Utility 30163, Main Thread] WARNING: Shutting down Utility process early due to a crash!: file /builds/worker/checkouts/gecko/ipc/glue/UtilityProcessChild.cpp:362
[task 2025-03-06T20:01:49.177Z] 20:01:49     INFO - GECKO(29999) | Exiting due to channel error.
[task 2025-03-06T20:01:49.177Z] 20:01:49     INFO - GECKO(29999) | [RDD 30084, Main Thread] WARNING: Shutting down RDD process early due to a crash!: file /builds/worker/checkouts/gecko/dom/media/ipc/RDDParent.cpp:302
[task 2025-03-06T20:01:49.177Z] 20:01:49     INFO - GECKO(29999) | [Child 30293, IPC I/O Child] WARNING: [2D525633B1492F92.1558A5A2E775BEDE]: Dropping message '<null>'; no connection to unknown peer 1.1: file /builds/worker/checkouts/gecko/ipc/glue/NodeController.cpp:364
[task 2025-03-06T20:01:49.177Z] 20:01:49     INFO - GECKO(29999) | [Child 30293, RemoteLzyStream] WARNING: RemoteLazyInputStreamChild disconnected unexpectedly (1 streams remaining)! 7f2076b38030 {e05a486b-ee48-4f2a-92f3-8f57db84bc57}: file /builds/worker/checkouts/gecko/dom/file/ipc/RemoteLazyInputStreamChild.cpp:51
[task 2025-03-06T20:01:49.177Z] 20:01:49     INFO - GECKO(29999) | [Child 30293, RemoteLzyStream] WARNING: RemoteLazyInputStreamChild disconnected unexpectedly (1 streams remaining)! 7f2096c52480 {36699b3f-f16d-454a-a21e-10fa1e1c25b3}: file /builds/worker/checkouts/gecko/dom/file/ipc/RemoteLazyInputStreamChild.cpp:51
[task 2025-03-06T20:01:49.177Z] 20:01:49     INFO - GECKO(29999) | Exiting due to channel error.
[task 2025-03-06T20:01:49.178Z] 20:01:49     INFO - GECKO(29999) | [Child 30315, IPC I/O Child] WARNING: [45D9C5961CB47B9C.8E8B140876C8300A]: Dropping message '<null>'; no connection to unknown peer 1.1: file /builds/worker/checkouts/gecko/ipc/glue/NodeController.cpp:364
[task 2025-03-06T20:01:49.178Z] 20:01:49     INFO - GECKO(29999) | [Child 30315, RemoteLzyStream] WARNING: RemoteLazyInputStreamChild disconnected unexpectedly (1 streams remaining)! 7f2096c528d0 {399c0eca-7bd6-479d-be6b-3f4c9b6b2c44}: file /builds/worker/checkouts/gecko/dom/file/ipc/RemoteLazyInputStreamChild.cpp:51
[task 2025-03-06T20:01:49.179Z] 20:01:49     INFO - GECKO(29999) | [Child 30315, RemoteLzyStream] WARNING: RemoteLazyInputStreamChild disconnected unexpectedly (1 streams remaining)! 7f2096c52760 {0c0d38b6-1615-4024-8391-d34d3a400389}: file /builds/worker/checkouts/gecko/dom/file/ipc/RemoteLazyInputStreamChild.cpp:51
[task 2025-03-06T20:01:49.179Z] 20:01:49     INFO - GECKO(29999) | [Child 30315, RemoteLzyStream] WARNING: RemoteLazyInputStreamChild disconnected unexpectedly (1 streams remaining)! 7f2096c525f0 {b89cb715-1372-49f3-bd0c-9b776dd06af3}: file /builds/worker/checkouts/gecko/dom/file/ipc/RemoteLazyInputStreamChild.cpp:51
[task 2025-03-06T20:01:49.180Z] 20:01:49     INFO - GECKO(29999) | [Child 30315, RemoteLzyStream] WARNING: RemoteLazyInputStreamChild disconnected unexpectedly (1 streams remaining)! 7f2096c52e90 {3c58cf18-9074-447a-a7e3-e251c45a83da}: file /builds/worker/checkouts/gecko/dom/file/ipc/RemoteLazyInputStreamChild.cpp:51
[task 2025-03-06T20:01:49.180Z] 20:01:49     INFO - GECKO(29999) | [Child 30315, RemoteLzyStream] WARNING: RemoteLazyInputStreamChild disconnected unexpectedly (1 streams remaining)! 7f2096c52310 {b41a2a4b-6532-47ee-b01b-00cf35233c61}: file /builds/worker/checkouts/gecko/dom/file/ipc/RemoteLazyInputStreamChild.cpp:51
[task 2025-03-06T20:01:49.181Z] 20:01:49     INFO - GECKO(29999) | Exiting due to channel error.
[task 2025-03-06T20:01:49.181Z] 20:01:49     INFO - GECKO(29999) | [Child 30229, IPC I/O Child] WARNING: [34DBDB757256A373.1BC1AF1C4ABBF4CB]: Dropping message '<null>'; no connection to unknown peer 1.1: file /builds/worker/checkouts/gecko/ipc/glue/NodeController.cpp:364
[task 2025-03-06T20:01:49.182Z] 20:01:49     INFO - GECKO(29999) | Exiting due to channel error.
[task 2025-03-06T20:01:49.182Z] 20:01:49     INFO - GECKO(29999) | [Child 30170, IPC I/O Child] WARNING: [8D631AA8255169F.A38E8E0ED885D9BC]: Dropping message '<null>'; no connection to unknown peer 1.1: file /builds/worker/checkouts/gecko/ipc/glue/NodeController.cpp:364
[task 2025-03-06T20:01:49.183Z] 20:01:49     INFO - GECKO(29999) | Exiting due to channel error.
[task 2025-03-06T20:01:49.183Z] 20:01:49     INFO - GECKO(29999) | [Child 30116, IPC I/O Child] WARNING: [8817D0C01635771A.62A5D52495EB1F77]: Dropping message '<null>'; no connection to unknown peer 1.1: file /builds/worker/checkouts/gecko/ipc/glue/NodeController.cpp:364
[task 2025-03-06T20:01:49.184Z] 20:01:49     INFO - GECKO(29999) | [Child 30116, RemoteLzyStream] WARNING: RemoteLazyInputStreamChild disconnected unexpectedly (1 streams remaining)! 7f2076bfed20 {c9c72d25-d192-414d-a830-a41f88ad17e7}: file /builds/worker/checkouts/gecko/dom/file/ipc/RemoteLazyInputStreamChild.cpp:51
[task 2025-03-06T20:01:49.184Z] 20:01:49     INFO - GECKO(29999) | [Child 30116, RemoteLzyStream] WARNING: RemoteLazyInputStreamChild disconnected unexpectedly (1 streams remaining)! 7f2076bfea40 {b027060f-381b-4ae8-9935-3c9465cf4d77}: file /builds/worker/checkouts/gecko/dom/file/ipc/RemoteLazyInputStreamChild.cpp:51
[task 2025-03-06T20:01:49.184Z] 20:01:49     INFO - GECKO(29999) | Exiting due to channel error.
[task 2025-03-06T20:01:49.185Z] 20:01:49     INFO - GECKO(29999) | [Child 30075, IPC I/O Child] WARNING: [4F457306082D0177.4ED793F55D0E8BCE]: Dropping message '<null>'; no connection to unknown peer 1.1: file /builds/worker/checkouts/gecko/ipc/glue/NodeController.cpp:364
[task 2025-03-06T20:01:49.185Z] 20:01:49     INFO - GECKO(29999) | [Child 30075, RemoteLzyStream] WARNING: RemoteLazyInputStreamChild disconnected unexpectedly (1 streams remaining)! 7f2074e1f030 {d972a483-f652-4019-90d6-54f90979dba1}: file /builds/worker/checkouts/gecko/dom/file/ipc/RemoteLazyInputStreamChild.cpp:51
[task 2025-03-06T20:01:49.186Z] 20:01:49     INFO - GECKO(29999) | [Child 30075, RemoteLzyStream] WARNING: RemoteLazyInputStreamChild disconnected unexpectedly (1 streams remaining)! 7f20761b51a0 {3d68891f-efc0-4add-acff-f5a19a5e2bc3}: file /builds/worker/checkouts/gecko/dom/file/ipc/RemoteLazyInputStreamChild.cpp:51
[task 2025-03-06T20:01:49.186Z] 20:01:49     INFO - GECKO(29999) | [Child 30075, RemoteLzyStream] WARNING: RemoteLazyInputStreamChild disconnected unexpectedly (1 streams remaining)! 7f20761cb1a0 {7093362f-19aa-4c14-b160-a58ddd136cf0}: file /builds/worker/checkouts/gecko/dom/file/ipc/RemoteLazyInputStreamChild.cpp:51
[task 2025-03-06T20:01:49.187Z] 20:01:49     INFO - GECKO(29999) | [Child 30075, RemoteLzyStream] WARNING: RemoteLazyInputStreamChild disconnected unexpectedly (1 streams remaining)! 7f20761a2e90 {7d2004ec-eb0f-40b2-9a38-a9afd92d0d2c}: file /builds/worker/checkouts/gecko/dom/file/ipc/RemoteLazyInputStreamChild.cpp:51
[task 2025-03-06T20:01:49.187Z] 20:01:49     INFO - GECKO(29999) | [Child 30075, RemoteLzyStream] WARNING: RemoteLazyInputStreamChild disconnected unexpectedly (1 streams remaining)! 7f20761b5030 {34086cf2-f346-491f-9658-3cddee1733f5}: file /builds/worker/checkouts/gecko/dom/file/ipc/RemoteLazyInputStreamChild.cpp:51
[task 2025-03-06T20:01:49.188Z] 20:01:49     INFO - GECKO(29999) | Exiting due to channel error.
[task 2025-03-06T20:01:49.188Z] 20:01:49     INFO - TEST-INFO | Main app process: exit 11
[task 2025-03-06T20:01:49.189Z] 20:01:49    ERROR - TEST-UNEXPECTED-FAIL | ShutdownLeaks | process() called before end of test suite
[task 2025-03-06T20:01:49.189Z] 20:01:49     INFO - TEST-INFO | Confirming we saw 23 DOCSHELL created and 9 destroyed log strings.
[task 2025-03-06T20:01:49.189Z] 20:01:49     INFO - TEST-INFO | Confirming we saw 61 DOMWINDOW created and 15 destroyed log strings.
[task 2025-03-06T20:01:49.190Z] 20:01:49     INFO - Buffered messages logged at 20:01:35
[task 2025-03-06T20:01:49.190Z] 20:01:49     INFO - Entering setup bound 
[task 2025-03-06T20:01:49.191Z] 20:01:49     INFO - TEST-PASS | browser/components/screenshots/tests/browser/browser_keyboard_tests.js | The screenshots button was added to the nav bar - "[object XULElement]" == true - 

Changing component based on nsWindow::OnEnterNotifyEvent being on the stack.

Component: JavaScript Engine → Widget: Gtk

I ran into this issue the other day. It is very likely related to class CurrentX11TimeGetter.
This class assumes that it's method GetTimeAsyncForPossibleBackwardsSkew() should be called before PropertyNotifyHandler() while the later one is called by the handler of window property change events.

The process is GetTimeAsyncForPossibleBackwardsSkew() set mAsyncUpdateStart before changing GDK_TIMESTAMP_PROP property of the window. The property change will cause the event handler be called and call PropertyNotifyHandler().

However, GDK_TIMESTAMP_PROP is a property of the window. I suspect that somewhere else also change this property, causing PropertyNotifyHandler() been called without calling GetTimeAsyncForPossibleBackwardsSkew() first.

According to [1], this preoperty GDK_TIMESTAMP_PROP has been used to get server timestamp. In fact, it is just used to trigger an xevent and get the timestamp from the xevent. Every xevent has a time field from X server. So, it doesn't has to be GDK_TIMESTAMP_PROP. The problem here is GDK_TIMESTAMP_PROP has been used by Gtk/Gdk already. Reusing this property here would be interfered by Gtk/Gdk. I would suggest to use another property, or check mAsyncUpdateStart at the very beginning of PropertyNotifyHandler().

[1] https://gitlab.gnome.org/GNOME/gtk/blob/3.24.1/gdk/x11/gdkwindow-x11.c#L5513

I just found there is something deeper. I will investigate into it.

This bug seems to relate to bug 1950992.

https://searchfox.org/mozilla-central/rev/beba5cde846f944c4d709e75cbe499d17af880a4/widget/SystemTimeConverter.h#216

aTime here is the time of a xevent that is the least significant 32-bits of SERVERTIME of X server. And, SERVERTIME is a 64-bits of milliseconds from some arbitrary starting point. [1] That means it can wrap around about every 49 days. I don't know what the starting point is of the X server running on test servers. But, in theory, the value of wholeMillis can be negative 49 days. And, we use clock CLOCK_MONOTONIC as the source of TimeStamp on Linux. It is milliseconds that the system has been running since it was booted. On the test environment, it is from a few minutes to hours. When wholeMillis is negative 49 days, the value of *aTimeAsTimeStamp computed here could be null according to the implementation of TimeStamp::operator+=().

[1] https://www.x.org/releases/X11R7.7/doc/xextproto/sync.html#Types

Flags: needinfo?(padenot)
Flags: needinfo?(canaltinova)
Attachment #9495687 - Attachment is obsolete: true

Nazim, please add a printf assertion to catch this, to confirm or infirm thinker's diagnosis.

Flags: needinfo?(padenot)

(In reply to Thinker Li [:sinker] from comment #22)

This bug seems to relate to bug 1950992.

https://searchfox.org/mozilla-central/rev/beba5cde846f944c4d709e75cbe499d17af880a4/widget/SystemTimeConverter.h#216

aTime here is the time of a xevent that is the least significant 32-bits of SERVERTIME of X server. And, SERVERTIME is a 64-bits of milliseconds from some arbitrary starting point. [1] That means it can wrap around about every 49 days. I don't know what the starting point is of the X server running on test servers. But, in theory, the value of wholeMillis can be negative 49 days. And, we use clock CLOCK_MONOTONIC as the source of TimeStamp on Linux. It is milliseconds that the system has been running since it was booted. On the test environment, it is from a few minutes to hours. When wholeMillis is negative 49 days, the value of *aTimeAsTimeStamp computed here could be null according to the implementation of TimeStamp::operator+=().

[1] https://www.x.org/releases/X11R7.7/doc/xextproto/sync.html#Types

Hmm, this explanation seems accurate. But SystemTimeConverter should be able to handle the overflow/wrap around already. We already have tests for it here: https://searchfox.org/mozilla-central/rev/b731af0459d1aaa9bd1a2227c0fe3bc188c664ae/widget/tests/gtest/TestTimeConverter.cpp#132-202

I tried to add another test case for this but I failed to do it. Not so sure how to trigger this. It would definitely be easier if we can have a good reproducible test case.

I will add a MOZ_CRASH_UNSAFE_PRINTF so it can help with the debugging.

Flags: needinfo?(canaltinova)
Assignee: nobody → canaltinova
Status: NEW → ASSIGNED
Attachment #9497909 - Flags: data-review?(chutten) → data-review?(tlong)

Comment on attachment 9497909 [details]
data-collection-form.txt

Data Review Form (to be filled by Data Stewards)

  1. Is there or will there be documentation that describes the schema for the ultimate data set in a public, complete, and accurate way?
  • Yes, I believe this ends up in the Glean Dictionary since crash pings are now Glean
  1. Is there a control mechanism that allows the user to turn the data collection on and off?
  • Yes, the application settings provide data collection opt-out choices.
  1. If the request is for permanent data collection, is there someone who will monitor the data over time?
  • Collection to expire in 6 months or be renewed
  1. Using the category system of data types on the Mozilla wiki, what collection type of data do the requested measurements fall under?
  • Category 1 - Technical
  1. Is the data collection request for default-on or default-off?
  • Users opt-in to sending crash data
  1. Does the instrumentation include the addition of any new identifiers (whether anonymous or otherwise; e.g., username, random IDs, etc.
  • No
  1. Is the data collection covered by the existing Firefox privacy notice?
  • Yes
  1. Does the data collection use a third-party collection tool?
  • No

Result

data-review+

Attachment #9497909 - Flags: data-review?(tlong) → data-review+
Pushed by abutkovits@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/32f67697b4bf https://hg.mozilla.org/integration/autoland/rev/e8c9d1af9da2 Revert "Bug 1952364 - Add a printf crash to catch the timestamp issue r=padenot" for causing bustages at SystemTimeConverter.h.
Status: ASSIGNED → RESOLVED
Closed: 1 month ago
Resolution: --- → FIXED
Target Milestone: --- → 142 Branch
Flags: needinfo?(canaltinova)

Let's reopen this as the underlying issue hasn't been fixed yet.

Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Keywords: leave-open
Regressions: 1975578

(In reply to Paul Adenot (:padenot) from comment #37)

Caught this in rr by chance locally, here's a pernosco recording: https://pernos.co/debug/eCkhwmCfGFwDq4_mJIRriA/index.html#f{m[BGCN,2g_,t[AQ,OVVg_,f{e[BGBF,jrg_,s{afwA4YAAA,bAZY,uI76X3g,oI8rjEQ___/

This is already based on the new signature from bug 1975578 (which I would not strictly see as a regression).

IIUC bug 1626734 introduced this downcast which will fail if wholeMillis is negative (IIUC all instantiations of SystemTimeConverter use variants of uint32_t as Time). I wonder (given we are dealing with clock skews here) if we should also be prepared to see negative values, instead. If we really do not want to allow negative values there, we should assert there instead (and maybe use a CheckedUint32 instead as Time). But a delta is a delta and should possibly go also below zero without failing calculations. If we want to ensure that the delta fits into 31 Bits, we should do something different here - but I cannot see anything in the subsequent calculations that would go wrong with negative or bigger values (being all 64 bit based)?

Edit: It seems :sinker made a very similar analysis in bug 1975578 comment 2.

Flags: needinfo?(thinker.li)

I believe we can close this now since bug 1975578 is fixed.

Status: REOPENED → RESOLVED
Closed: 1 month ago9 days ago
Resolution: --- → FIXED
Flags: needinfo?(thinker.li)
Keywords: regression
Regressed by: 1626734
No longer regressions: 1975578
Target Milestone: 142 Branch → 143 Branch
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: