Closed
Bug 1479591
Opened 6 years ago
Closed 6 years ago
Introduce scrolling accessibility event
Categories
(Core :: Disability Access APIs, enhancement)
Tracking
()
RESOLVED
FIXED
mozilla63
Tracking | Status | |
---|---|---|
firefox63 | --- | fixed |
People
(Reporter: eeejay, Assigned: eeejay)
References
Details
Attachments
(1 file, 6 obsolete files)
30.93 KB,
patch
|
Details | Diff | Splinter Review |
In Android there is a TYPE_VIEW_SCOLLED[1] event. The name is misleading, this is a scrolling event that is regularly fired as a view is being scrolled. A typical android view will dispatch this event every 100ms while a scroll is occurring. The view also provides the current scroll position and the max position in both x and y. https://developer.android.com/reference/android/view/accessibility/AccessibilityEvent#TYPE_VIEW_SCROLLED
Assignee | ||
Comment 1•6 years ago
|
||
This patch slightly changes EVENT_SCROLLING_END for simplicity sake. Currently, on each scroll callback a time is (re)set for 50 ms. If the timer is called twice (aka 100ms), without any more scroll callbacks being called, an EVENT_SCROLLING_END is fired. I'm not sure why it is set up that way, and why not simply have a 100ms timer that is called once. This patch changes the timer to not be reset on each scroll callback, and to be fired on a 100ms interval. If there were no scroll callbacks since the last timer fired, we dispatch an EVENT_SCROLLING_END event. This means that the event will be dispatched between +100ms and -200ms after the last scroll callback. If this doesn't seem reasonable, I think the only way to harmonize these two events is to have to timers. I can do that, but was hoping on cutting some of the complexity here.
Attachment #8996097 -
Flags: review?(surkov.alexander)
Assignee | ||
Comment 2•6 years ago
|
||
Oops. I think I fixed some build issues I found in try.
Attachment #8996139 -
Flags: review?(surkov.alexander)
Assignee | ||
Updated•6 years ago
|
Attachment #8996097 -
Attachment is obsolete: true
Attachment #8996097 -
Flags: review?(surkov.alexander)
Comment 3•6 years ago
|
||
a generic question: why do you need accessibility scrolling event, i.e why you cannot use DOM onscroll? Is it something related to cross-process boundaries?
Assignee | ||
Comment 4•6 years ago
|
||
That's right. We used to be able to do this with DOM scroll in a frame script (although the screen bounds would not be right). To do this natively we need to formalize this in an ipdl and since it is an accessibility event..
Assignee | ||
Updated•6 years ago
|
Assignee: nobody → eitan
Comment 5•6 years ago
|
||
Comment on attachment 8996139 [details] [diff] [review] Introduced accessibility scrolling event and interface. r?surkov Review of attachment 8996139 [details] [diff] [review]: ----------------------------------------------------------------- it appears browser_events_scroll.js was accidentally added ::: accessible/base/AccEvent.cpp @@ +277,5 @@ > } > > + if (eventGroup & (1 << AccEvent::eScrollingEvent)) { > + AccScrollingEvent* sa = downcast_accEvent(aEvent); > + xpEvent = new xpcAccScrollingEvent(type,ToXPC(acc), ToXPCDocument(doc), node, nit: space after "type," @@ +279,5 @@ > + if (eventGroup & (1 << AccEvent::eScrollingEvent)) { > + AccScrollingEvent* sa = downcast_accEvent(aEvent); > + xpEvent = new xpcAccScrollingEvent(type,ToXPC(acc), ToXPCDocument(doc), node, > + fromUser, sa->ScrollX(), sa->ScrollY(), > + sa->MaxScrollX(), sa->MaxScrollY()); nit: indentatation ::: accessible/base/AccEvent.h @@ +554,5 @@ > +class AccScrollingEvent : public AccEvent > +{ > +public: > + AccScrollingEvent(Accessible* aAccessible, int32_t aScrollX, int32_t aScrollY, > + int32_t aMaxScrollX, int32_t aMaxScrollY) : nit: indentation @@ +573,5 @@ > + > + int32_t ScrollX() { return mScrollX; } > + int32_t ScrollY() { return mScrollY; } > + int32_t MaxScrollX() { return mMaxScrollX; } > + int32_t MaxScrollY() { return mMaxScrollY; } please document these ::: accessible/generic/DocAccessible.cpp @@ +610,5 @@ > { > DocAccessible* docAcc = reinterpret_cast<DocAccessible*>(aClosure); > > + if (docAcc) { > + nsIPresShell *presShell = docAcc->PresShell(); nit: type* name @@ -610,5 @@ > { > DocAccessible* docAcc = reinterpret_cast<DocAccessible*>(aClosure); > > - if (docAcc && docAcc->mScrollPositionChangedTicks && > - ++docAcc->mScrollPositionChangedTicks > 2) { while the logic seems has been preserved, I would prefer for sure to land the change separately from the main patch @@ +651,5 @@ > // then the ::Notify() method will fire the accessibility event for scroll position changes > + const uint32_t kScrollPosCheckWait = 100; > + mScrollPositionChanged = true; > + if (!mScrollWatchTimer) { > + ScrollTimerCallback(nullptr, this); this is weird you call a callback directly, not sure I catch why previous approach didn't work out. It seems reasonable, if no timers, then create one, if there's a timer on stack, then delay it. ::: accessible/generic/DocAccessible.h @@ +603,5 @@ > mNodeToAccessibleMap; > > nsIDocument* mDocumentNode; > nsCOMPtr<nsITimer> mScrollWatchTimer; > + bool mScrollPositionChanged; // Used for tracking scroll events nit: indentation use mDocFlags to store value ::: accessible/interfaces/nsIAccessibleEvent.idl @@ +418,5 @@ > */ > const unsigned long EVENT_TEXT_VALUE_CHANGE = 0x0057; > > + /** > + * An accessible's viewport is scrolling. is -> was? due to async nature of events ::: accessible/interfaces/nsIAccessibleScrollingEvent.idl @@ +12,5 @@ > +[scriptable, builtinclass, uuid(f75f0b32-5342-4d60-b1a5-b7bd6888eef5)] > +interface nsIAccessibleScrollingEvent : nsIAccessibleEvent > +{ > + /** > + * New x scroll position in device pixels. maybe add: within a scrollable target? @@ +14,5 @@ > +{ > + /** > + * New x scroll position in device pixels. > + */ > + readonly attribute long scrollX; these are not unsigned longs, because negative values indicate scrolling to top? if so, then it's be nice to document that as well @@ +17,5 @@ > + */ > + readonly attribute long scrollX; > + > + /** > + * New y scroll position in device pixels nit: dot is missed, here and below ::: accessible/ipc/DocAccessibleParent.cpp @@ +435,5 @@ > +{ > + ProxyAccessible* target = GetAccessible(aID); > + > +#if defined(ANDROID) > + ProxyScrollingEvent(target, aScrollX, aScrollY, aMaxScrollX, aMaxScrollY); hm, ProxyScrollingEvent implementation is in other platforms only and it is empty, not sure how it works @@ +441,5 @@ > + > + xpcAccessibleGeneric* xpcAcc = GetXPCAccessible(target); > + xpcAccessibleDocument* doc = GetAccService()->GetXPCDocument(this); > + nsINode* node = nullptr; > + bool fromUser = true; // XXX fix me more detailed XXX comment will be nice, maybe point out how it can be fixed @@ +444,5 @@ > + nsINode* node = nullptr; > + bool fromUser = true; // XXX fix me > + RefPtr<xpcAccScrollingEvent> event = > + new xpcAccScrollingEvent(nsIAccessibleEvent::EVENT_SCROLLING, xpcAcc, doc, > + node, fromUser, aScrollX, aScrollY, aMaxScrollX, aMaxScrollY); nit: usually arguments are indented relative each other, thus 'node' should be under 'nsIAccessibleEvent::EVENT_SCROLLING argument) ::: accessible/tests/browser/events/browser_test_scrolling.js @@ +15,5 @@ > + content.location.hash = "#two"; > + }); > + let [scrollEvent1] = await onScrolling; > + scrollEvent1.QueryInterface(nsIAccessibleScrollingEvent); > + ok(scrollEvent1.maxScrollY >= scrollEvent1.scrollY, "scrollY is within max"); test for scrollX as well?
Comment 6•6 years ago
|
||
Comment on attachment 8996139 [details] [diff] [review] Introduced accessibility scrolling event and interface. r?surkov cancelling review until comments are addressed
Flags: needinfo?(eitan)
Attachment #8996139 -
Flags: review?(surkov.alexander)
Assignee | ||
Comment 7•6 years ago
|
||
(In reply to alexander :surkov (:asurkov) from comment #5) > Comment on attachment 8996139 [details] [diff] [review] > @@ +651,5 @@ > > // then the ::Notify() method will fire the accessibility event for scroll position changes > > + const uint32_t kScrollPosCheckWait = 100; > > + mScrollPositionChanged = true; > > + if (!mScrollWatchTimer) { > > + ScrollTimerCallback(nullptr, this); > > this is weird you call a callback directly, not sure I catch why previous > approach didn't work out. It seems reasonable, if no timers, then create > one, if there's a timer on stack, then delay it. > The previous approach kept delaying the timer until there were no more scroll callbacks for 100ms. We need to fire an event every 100ms. So we can't delay the timer. I have an idea for another way to implement this. I'll come back with a very different patch soon. I'll incorporate your nits into it. > > ::: accessible/interfaces/nsIAccessibleEvent.idl > @@ +418,5 @@ > > */ > > const unsigned long EVENT_TEXT_VALUE_CHANGE = 0x0057; > > > > + /** > > + * An accessible's viewport is scrolling. > > is -> was? due to async nature of events > "is" == SROLLING "was" == SCROLLING_END Of course, we can't promise that the scrolling is still happening when the AT gets a SCROLLING, but we can promise that a SCROLLING_END will follow when it's done.
Flags: needinfo?(eitan)
Comment 8•6 years ago
|
||
(In reply to Eitan Isaacson [:eeejay] from comment #7) > (In reply to alexander :surkov (:asurkov) from comment #5) > is weird you call a callback directly, not sure I catch why previous > > approach didn't work out. It seems reasonable, if no timers, then create > > one, if there's a timer on stack, then delay it. > > > > The previous approach kept delaying the timer until there were no more > scroll callbacks for 100ms. We need to fire an event every 100ms. what do you mean we should fire an event 100ms, is it some requirement we have to meet? > So we > can't delay the timer. I have an idea for another way to implement this. > I'll come back with a very different patch soon. I'll incorporate your nits > into it. ok, looking forward to see it, thanks! :) > > > > ::: accessible/interfaces/nsIAccessibleEvent.idl > > @@ +418,5 @@ > > > */ > > > const unsigned long EVENT_TEXT_VALUE_CHANGE = 0x0057; > > > > > > + /** > > > + * An accessible's viewport is scrolling. > > > > is -> was? due to async nature of events > > > > "is" == SROLLING > "was" == SCROLLING_END > > Of course, we can't promise that the scrolling is still happening when the > AT gets a SCROLLING, but we can promise that a SCROLLING_END will follow > when it's done. fair enough
Assignee | ||
Comment 9•6 years ago
|
||
(In reply to alexander :surkov (:asurkov) from comment #5) > Comment on attachment 8996139 [details] [diff] [review] > @@ +14,5 @@ > > +{ > > + /** > > + * New x scroll position in device pixels. > > + */ > > + readonly attribute long scrollX; > > these are not unsigned longs, because negative values indicate scrolling to > top? if so, then it's be nice to document that as well Android uses signed int32s, so I am using that in our internal code too. What do you think? > ::: accessible/ipc/DocAccessibleParent.cpp > @@ +435,5 @@ > > +{ > > + ProxyAccessible* target = GetAccessible(aID); > > + > > +#if defined(ANDROID) > > + ProxyScrollingEvent(target, aScrollX, aScrollY, aMaxScrollX, aMaxScrollY); > > hm, ProxyScrollingEvent implementation is in other platforms only and it is > empty, not sure how it works > I shared a link above with the basic API docs. An Android implementation will follow.
Assignee | ||
Comment 10•6 years ago
|
||
A much simpler implementation, doh.
Attachment #8997529 -
Flags: review?(surkov.alexander)
Assignee | ||
Updated•6 years ago
|
Attachment #8996139 -
Attachment is obsolete: true
Assignee | ||
Comment 11•6 years ago
|
||
OK, maybe I'm getting ahead of myself here. But I made SCROLLING_END support the event interface as well. Seems like this could be useful for knowing the final scroll position.
Attachment #8997555 -
Flags: review?(surkov.alexander)
Assignee | ||
Updated•6 years ago
|
Attachment #8997529 -
Attachment is obsolete: true
Attachment #8997529 -
Flags: review?(surkov.alexander)
Comment 12•6 years ago
|
||
Comment on attachment 8997555 [details] [diff] [review] Introduced accessibility scrolling event and interface. r?surkov Review of attachment 8997555 [details] [diff] [review]: ----------------------------------------------------------------- ::: accessible/generic/DocAccessible.cpp @@ +635,5 @@ > { > + TimeStamp timestamp = TimeStamp::Now(); > + if ((timestamp - mLastScrollingDispatch).ToMilliseconds() >= 100) { > + DispatchScrollingEvent(nsIAccessibleEvent::EVENT_SCROLLING); > + mLastScrollingDispatch = timestamp; so whenever scrolling starts, then you send event_scrolling event, and then you repeat it each next 100ms. Correct? Also, I'm not sure I understand why event_scrolling_event gets fired at all. It is not related with the patch, but since you revisit the code, then a question :) Every time when ScrollPositionDidChange is triggered, then ScrollTimerCallback is scheduled, and mScrollPositionChangedTicks is set to 1. Thus it should never reach > 2 value. What do I miss? ::: accessible/generic/DocAccessible.h @@ +606,5 @@ > > nsIDocument* mDocumentNode; > + nsCOMPtr<nsITimer> mScrollWatchTimer; > + uint16_t mScrollPositionChangedTicks; // Used for tracking scroll events > + TimeStamp mLastScrollingDispatch; it makes sense to keep these in the initialization list
Comment 14•6 years ago
|
||
(In reply to Eitan Isaacson [:eeejay] from comment #9) > (In reply to alexander :surkov (:asurkov) from comment #5) > > Comment on attachment 8996139 [details] [diff] [review] > > @@ +14,5 @@ > > > +{ > > > + /** > > > + * New x scroll position in device pixels. > > > + */ > > > + readonly attribute long scrollX; > > > > these are not unsigned longs, because negative values indicate scrolling to > > top? if so, then it's be nice to document that as well > > Android uses signed int32s, so I am using that in our internal code too. > > What do you think? well, if they are never negative, then I would use unsigned types, less questions to implementation. Unsigned is casted to signed just fine.
Assignee | ||
Comment 15•6 years ago
|
||
(In reply to alexander :surkov (:asurkov) from comment #12) > Comment on attachment 8997555 [details] [diff] [review] > Introduced accessibility scrolling event and interface. r?surkov > > Review of attachment 8997555 [details] [diff] [review]: > ----------------------------------------------------------------- > > ::: accessible/generic/DocAccessible.cpp > @@ +635,5 @@ > > { > > + TimeStamp timestamp = TimeStamp::Now(); > > + if ((timestamp - mLastScrollingDispatch).ToMilliseconds() >= 100) { > > + DispatchScrollingEvent(nsIAccessibleEvent::EVENT_SCROLLING); > > + mLastScrollingDispatch = timestamp; > > so whenever scrolling starts, then you send event_scrolling event, and then > you repeat it each next 100ms. Correct? > > Also, I'm not sure I understand why event_scrolling_event gets fired at all. > It is not related with the patch, but since you revisit the code, then a > question :) Every time when ScrollPositionDidChange is triggered, then > ScrollTimerCallback is scheduled, and mScrollPositionChangedTicks is set to > 1. Thus it should never reach > 2 value. What do I miss? The timer callback is repeated at the given interval (50ms). So when the scrolling callback stops being called, it will tick twice. Does that make sense? I'm not sure why it isn't simply a one-time callback at a 100ms delay. I'm assuming there is a good reason.. let me git blame that.. wow. It is from bug 135482. 17 years ago. I can change it, but honestly I'm not sure if that weirdness is there intentionally. I'll give it a try! > > ::: accessible/generic/DocAccessible.h > @@ +606,5 @@ > > > > nsIDocument* mDocumentNode; > > + nsCOMPtr<nsITimer> mScrollWatchTimer; > > + uint16_t mScrollPositionChangedTicks; // Used for tracking scroll events > > + TimeStamp mLastScrollingDispatch; > > it makes sense to keep these in the initialization list I only introduced mLastScrollingDispatch, and its public constructor doesn't take arguments (initializes to null/0). Not sure what else I should do here.
Flags: needinfo?(eitan)
Assignee | ||
Comment 16•6 years ago
|
||
I reworked how SCROLLING_END works too. Because, of course.
Attachment #8999011 -
Flags: review?(surkov.alexander)
Assignee | ||
Updated•6 years ago
|
Attachment #8997555 -
Attachment is obsolete: true
Attachment #8997555 -
Flags: review?(surkov.alexander)
Comment 17•6 years ago
|
||
(In reply to Eitan Isaacson [:eeejay] from comment #15) > > > nsIDocument* mDocumentNode; > > > + nsCOMPtr<nsITimer> mScrollWatchTimer; > > > + uint16_t mScrollPositionChangedTicks; // Used for tracking scroll events > > > + TimeStamp mLastScrollingDispatch; > > > > it makes sense to keep these in the initialization list > > I only introduced mLastScrollingDispatch, and its public constructor doesn't > take arguments (initializes to null/0). > Not sure what else I should do here. yeah, it makes sense to initialize the others too. It's a good practice to initialize class members explicitly, since sometimes it saves from hard-to-find bugs. Also I think static analysis should be unhappy about these (see bug 525063 and bug 1412641).
Comment 18•6 years ago
|
||
Comment on attachment 8999011 [details] [diff] [review] Introduced accessibility scrolling event and interface. r?surkov Review of attachment 8999011 [details] [diff] [review]: ----------------------------------------------------------------- assuming you didn't change the files other than DocAccessible, I skip those. r=me with the comments addressed. ::: accessible/generic/DocAccessible.cpp @@ +640,2 @@ > if (mScrollWatchTimer) { > + mScrollWatchTimer->SetDelay(kScrollEventInterval); // Create new timer, to avoid leaks it appears you don't need to have multiple timers. If you cancel the exiting one, and re-schedule a new one, then it's all you need. In this case if the callback gets triggered, then it means, no new events was received. Correct?
Attachment #8999011 -
Flags: review?(surkov.alexander) → review+
Assignee | ||
Comment 19•6 years ago
|
||
I guess you mean update the comment? It looks wrong, yeah.
Assignee | ||
Comment 20•6 years ago
|
||
Attachment #8999011 -
Attachment is obsolete: true
Assignee | ||
Updated•6 years ago
|
Keywords: checkin-needed
Comment 21•6 years ago
|
||
Pushed by nerli@mozilla.com: https://hg.mozilla.org/integration/mozilla-inbound/rev/dad95d849302 Introduced accessibility scrolling event and interface. r=surkov
Keywords: checkin-needed
Comment 22•6 years ago
|
||
Backed out changeset for causing linux debug leaks and security issues. Push with failures: https://treeherder.mozilla.org/#/jobs?repo=mozilla-inbound&filter-resultStatus=testfailed&filter-resultStatus=busted&filter-resultStatus=exception&fromchange=dad95d849302c966da9a710e96c80e7882eec5c2&tochange=9e6ef0b94077b72e1b9bb4bb310bfb561cd94f07&filter-searchStr=bc5&selectedJob=193992110 Failure log: https://treeherder.mozilla.org/logviewer.html#?job_id=193992110&repo=mozilla-inbound&lineNumber=1409 - security issue https://treeherder.mozilla.org/logviewer.html#?job_id=193991397&repo=mozilla-inbound&lineNumber=1748 - leaks Backout link: https://hg.mozilla.org/integration/mozilla-inbound/rev/9e6ef0b94077b72e1b9bb4bb310bfb561cd94f07 [task 2018-08-15T00:22:05.077Z] 00:22:05 INFO - GECKO(1076) | SUMMARY: AddressSanitizer: heap-use-after-free /builds/worker/workspace/build/src/obj-firefox/dist/include/mozilla/a11y/ProxyAccessibleBase.h:133:31 in IsDoc [task 2018-08-15T00:22:05.078Z] 00:22:05 INFO - GECKO(1076) | Shadow bytes around the buggy address: [task 2018-08-15T00:22:05.079Z] 00:22:05 INFO - GECKO(1076) | 0x0c1c8001a960: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fa [task 2018-08-15T00:22:05.080Z] 00:22:05 INFO - GECKO(1076) | 0x0c1c8001a970: fa fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00 [task 2018-08-15T00:22:05.082Z] 00:22:05 INFO - GECKO(1076) | 0x0c1c8001a980: 00 00 00 00 00 00 00 00 00 00 00 fa fa fa fa fa [task 2018-08-15T00:22:05.083Z] 00:22:05 INFO - GECKO(1076) | 0x0c1c8001a990: fa fa fa fa 00 00 00 00 00 00 00 00 00 00 00 00 [task 2018-08-15T00:22:05.084Z] 00:22:05 INFO - GECKO(1076) | 0x0c1c8001a9a0: 00 00 00 00 00 00 00 fa fa fa fa fa fa fa fa fa [task 2018-08-15T00:22:05.085Z] 00:22:05 INFO - GECKO(1076) | =>0x0c1c8001a9b0: fd fd fd fd fd fd fd fd fd fd[fd]fd fd fd fd fd [task 2018-08-15T00:22:05.086Z] 00:22:05 INFO - GECKO(1076) | 0x0c1c8001a9c0: fd fd fd fa fa fa fa fa fa fa fa fa 00 00 00 00 [task 2018-08-15T00:22:05.086Z] 00:22:05 INFO - GECKO(1076) | 0x0c1c8001a9d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fa [task 2018-08-15T00:22:05.087Z] 00:22:05 INFO - GECKO(1076) | 0x0c1c8001a9e0: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd [task 2018-08-15T00:22:05.088Z] 00:22:05 INFO - GECKO(1076) | 0x0c1c8001a9f0: fd fd fd fd fd fd fd fd fd fd fd fd fa fa fa fa [task 2018-08-15T00:22:05.089Z] 00:22:05 INFO - GECKO(1076) | 0x0c1c8001aa00: fa fa fa fa 00 00 00 00 00 00 00 00 00 00 00 00 [task 2018-08-15T00:22:05.090Z] 00:22:05 INFO - GECKO(1076) | Shadow byte legend (one shadow byte represents 8 application bytes): [task 2018-08-15T00:22:05.090Z] 00:22:05 INFO - GECKO(1076) | Addressable: 00 [task 2018-08-15T00:22:05.091Z] 00:22:05 INFO - GECKO(1076) | Partially addressable: 01 02 03 04 05 06 07 [task 2018-08-15T00:22:05.091Z] 00:22:05 INFO - GECKO(1076) | Heap left redzone: fa [task 2018-08-15T00:22:05.093Z] 00:22:05 INFO - GECKO(1076) | Freed heap region: fd [task 2018-08-15T00:22:05.094Z] 00:22:05 INFO - GECKO(1076) | Stack left redzone: f1 [task 2018-08-15T00:22:05.095Z] 00:22:05 INFO - GECKO(1076) | Stack mid redzone: f2 [task 2018-08-15T00:22:05.096Z] 00:22:05 INFO - GECKO(1076) | Stack right redzone: f3 [task 2018-08-15T00:22:05.097Z] 00:22:05 INFO - GECKO(1076) | Stack after return: f5 [task 2018-08-15T00:22:05.097Z] 00:22:05 INFO - GECKO(1076) | Stack use after scope: f8 [task 2018-08-15T00:22:05.098Z] 00:22:05 INFO - GECKO(1076) | Global redzone: f9 [task 2018-08-15T00:22:05.098Z] 00:22:05 INFO - GECKO(1076) | Global init order: f6 [task 2018-08-15T00:22:05.099Z] 00:22:05 INFO - GECKO(1076) | Poisoned by user: f7 [task 2018-08-15T00:22:05.100Z] 00:22:05 INFO - GECKO(1076) | Container overflow: fc [task 2018-08-15T00:22:05.101Z] 00:22:05 INFO - GECKO(1076) | Array cookie: ac [task 2018-08-15T00:22:05.102Z] 00:22:05 INFO - GECKO(1076) | Intra object redzone: bb [task 2018-08-15T00:22:05.104Z] 00:22:05 INFO - GECKO(1076) | ASan internal: fe [task 2018-08-15T00:22:05.105Z] 00:22:05 INFO - GECKO(1076) | Left alloca redzone: ca [task 2018-08-15T00:22:05.105Z] 00:22:05 INFO - GECKO(1076) | Right alloca redzone: cb [task 2018-08-15T00:22:05.106Z] 00:22:05 INFO - GECKO(1076) | ==1076==ABORTING [task 2018-08-15T00:22:05.136Z] 00:22:05 INFO - GECKO(1076) | AddressSanitizer:DEADLYSIGNAL [task 2018-08-15T00:22:05.142Z] 00:22:05 INFO - GECKO(1076) | ================================================================= [task 2018-08-15T00:22:05.145Z] 00:22:05 ERROR - GECKO(1076) | ==1263==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x7fe267b1df53 bp 0x7fe263c0f300 sp 0x7fe263c0f2e0 T2) [task 2018-08-15T00:22:05.173Z] 00:22:05 INFO - GECKO(1076) | ==1263==The signal is caused by a WRITE memory access. [task 2018-08-15T00:22:05.179Z] 00:22:05 INFO - GECKO(1076) | ==1263==Hint: address points to the zero page. [task 2018-08-15T00:22:05.183Z] 00:22:05 INFO - GECKO(1076) | Crash Annotation GraphicsCriticalError: |[C0][GFX1-]: Receive IPC close with reason=AbnormalShutdown (t=2.53965) Crash Annotation GraphicsCriticalError: |[C0][GFX1-]: Receive IPC close with reason=AbnormalShutdown (t=6.06538) [GFX1-]: Receive IPC close with reason=AbnormalShutdown [task 2018-08-15T00:22:05.187Z] 00:22:05 INFO - GECKO(1076) | [Child 1233, Chrome_ChildThread] WARNING: pipe error (3): Connection reset by peer: file /builds/worker/workspace/build/src/ipc/chromium/src/chrome/common/ipc_channel_posix.cc, line 356 [task 2018-08-15T00:22:05.190Z] 00:22:05 INFO - GECKO(1076) | AddressSanitizer:DEADLYSIGNAL [task 2018-08-15T00:22:05.193Z] 00:22:05 INFO - GECKO(1076) | ================================================================= [task 2018-08-15T00:22:05.198Z] 00:22:05 ERROR - GECKO(1076) | ==1233==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x7fdb2281df53 bp 0x7fdb1e90f300 sp 0x7fdb1e90f2e0 T2) [task 2018-08-15T00:22:05.203Z] 00:22:05 INFO - GECKO(1076) | ==1233==The signal is caused by a WRITE memory access. [task 2018-08-15T00:22:05.205Z] 00:22:05 INFO - GECKO(1076) | ==1233==Hint: address points to the zero page. [task 2018-08-15T00:22:05.211Z] 00:22:05 INFO - GECKO(1076) | AddressSanitizer:DEADLYSIGNAL [task 2018-08-15T00:22:05.214Z] 00:22:05 INFO - GECKO(1076) | ================================================================= [task 2018-08-15T00:22:05.216Z] 00:22:05 ERROR - GECKO(1076) | ==1205==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x7fe3e0a1df53 bp 0x7fe3dcb0f300 sp 0x7fe3dcb0f2e0 T2) [task 2018-08-15T00:22:05.218Z] 00:22:05 INFO - GECKO(1076) | ==1205==The signal is caused by a WRITE memory access. [task 2018-08-15T00:22:05.224Z] 00:22:05 INFO - GECKO(1076) | Crash Annotation GraphicsCriticalError: |[C0][GFX1-]: Receive IPC close with reason=AbnormalShutdown (t=9.13202) ==1205==Hint: address points to the zero page. [task 2018-08-15T00:22:05.225Z] 00:22:05 INFO - GECKO(1076) | AddressSanitizer:DEADLYSIGNAL [task 2018-08-15T00:22:05.227Z] 00:22:05 INFO - GECKO(1076) | ================================================================= [task 2018-08-15T00:22:05.232Z] 00:22:05 INFO - GECKO(1076) | [Child 1146, Chrome_ChildThread] WARNING: pipe error (3): Connection reset by peer: file /builds/worker/workspace/build/src/ipc/chromium/src/chrome/common/ipc_channel_posix.cc, line 356 [task 2018-08-15T00:22:05.234Z] 00:22:05 INFO - GECKO(1076) | AddressSanitizer:DEADLYSIGNAL [task 2018-08-15T00:22:05.236Z] 00:22:05 INFO - GECKO(1076) | ================================================================= [task 2018-08-15T00:22:05.240Z] 00:22:05 ERROR - GECKO(1076) | ==1146==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x7efe3501df53 bp 0x7efe3110f300 sp 0x7efe3110f2e0 T2) [task 2018-08-15T00:22:05.244Z] 00:22:05 ERROR - GECKO(1076) | ==1171==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x7f2e5a71df53 bp 0x7f2e5680f300 sp 0x7f2e5680f2e0 T2) [task 2018-08-15T00:22:05.252Z] 00:22:05 INFO - GECKO(1076) | ==1171==The signal is caused by a WRITE memory access. [task 2018-08-15T00:22:05.254Z] 00:22:05 INFO - GECKO(1076) | ==1171==Hint: address points to the zero page. [task 2018-08-15T00:22:05.257Z] 00:22:05 INFO - GECKO(1076) | ==1146==The signal is caused by a WRITE memory access. [task 2018-08-15T00:22:05.258Z] 00:22:05 INFO - GECKO(1076) | ==1146==Hint: address points to the zero page.
Flags: needinfo?(eitan)
Assignee | ||
Comment 23•6 years ago
|
||
Added a check if xpc observers exist. The other recv event methods do this already..
Assignee | ||
Updated•6 years ago
|
Attachment #9000030 -
Attachment is obsolete: true
Assignee | ||
Updated•6 years ago
|
Flags: needinfo?(eitan)
Keywords: checkin-needed
Comment 24•6 years ago
|
||
Pushed by ryanvm@gmail.com: https://hg.mozilla.org/integration/mozilla-inbound/rev/da7e0c710c7d Introduced accessibility scrolling event and interface. r=surkov
Keywords: checkin-needed
Comment 25•6 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/da7e0c710c7d
Status: NEW → RESOLVED
Closed: 6 years ago
status-firefox63:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla63
You need to log in
before you can comment on or make changes to this bug.
Description
•