Open Bug 1678741 Opened 4 years ago Updated 3 years ago

ThreadActor deadlocks with several Frame targets in the same process

Categories

(DevTools :: General, defect, P3)

defect

Tracking

(Fission Milestone:Future)

Fission Milestone Future

People

(Reporter: jdescottes, Unassigned)

References

()

Details

See initial investigation from Alex at https://bugzilla.mozilla.org/show_bug.cgi?id=1503499#c14

When we have several Frame targets living in the same process, attach to the thread actor of each Frame target can cause a deadlock.

This occurs frequently with the bild.de test page used for DAMP complicated tests but can in theory happen with any page having several frames in the same process. On the bild.de test page, this leads to never receiving the load event for the page after a reload (most likely because we don't properly resume the thread).

Fixing this root issue should help enable the following DAMP tests on Fission:

  • inspector/complicated
  • styleeditor/complicated
  • netmonitor/complicated

The two other complicated tests (webconsole & jsdebugger) both use custom conditions to monitor the reload of the page, and are less likely to be impacted by this problem.

Bugbug thinks this bug should belong to this component, but please revert this change in case of error.

Component: General → Netmonitor
Whiteboard: dt-fission-m3-mvp

Tracking dt-fission-m3-mvp bugs for Fission MVP.

Fission Milestone: --- → MVP
Component: Netmonitor → General

I'm wondering if bug 1682780 will make this bug less critical. If we stop pausing on attach, this may only become an issue when we start breaking.
And as bug 1573327, breakpoints are set by the watcher actor (instead of the frontend), which may also re-shuffle everything around this issue.

Setting as blocked on Bug 1682780 pre previous comment. Seems to fix DAMP tests running with Fission enabled locally.

Depends on: 1682780

I can reproduce the issue easily:

STR:

  1. Load http://janodvarko.cz/tests/fission/case9/index.html
  2. Open DevTools and select the Debugger panel
  3. Check that three sources are available in the Sources tree side panel -> BUG, no sources available

ER:

  • index.js, iframe1.js, iframe2.js should be available
    (you can see a log from each source in the Console panel)

Testing config:

  • Current Nightly / Win 10
  • All Fission prefs on (including devtools.testing.enableServerWatcherSupport)
  • Cache disabled (using the checkbox in the Network panel) - the behavior a lot better when the cache is not disabled

Honza

Has STR: --- → yes

While bug 1682780 will fix immediate breakage on toolbox opening or page load,
the underlying design issue of having two thread actors against the same process still exists.
So we would probably have to refine the STR in order to include breakpoints in the remote process.
I'd expect things may still go wrong when hitting a breakpoints in remote process with more than one thread actor.

No longer blocks: 1673308

Moving some dt-fission-m3-mvp bugs from Fission MVP to M7 (blocking Beta experiment).

Fission Milestone: MVP → M7

This seems to work for me using Honza's STR or maybe i'm missing something?
Honza, can you still see the issue?

Flags: needinfo?(odvarko)

I see an issue with a breakpoint set.

Adding modified STR

STR:

AR:
Only the index.js file is the Source tree. iframe1.js, iframe2.js are missing.

ER:
index.js, iframe1.js and iframe2.js should be available
(you can see a log from each source in the Console panel)

Note:
I see it with all fission prefs both on and off

It would probably be worth investigating that once bug 1683139 and bug 1681698 are landed.
I don't think these patches will address this issue, but it may help finding a workaround.

Flags: needinfo?(odvarko)

Tracking dt-fission-m3-mvp test and infrastructure bugs for Fission M8 (blocking Release experiment).

Fission Milestone: M7 → M8
Blocks: 1657059

Tracking DevTools Post-M8 bugs for Fission MVP milestone. They don't block the Fission Release channel experiment, but we would like them to be completed before we roll out Fission by default.

Fission Milestone: M8 → MVP
Fission Milestone: MVP → Future
Whiteboard: dt-fission-m3-mvp
You need to log in before you can comment on or make changes to this bug.