Closed Bug 1175510 Opened 10 years ago Closed 10 years ago

Crash when running the DT2 demo

Categories

(Core :: Audio/Video, defect)

defect
Not set
critical

Tracking

()

RESOLVED FIXED
mozilla42
Tracking Status
firefox40 --- unaffected
firefox41 + fixed
firefox42 --- fixed

People

(Reporter: bbouvier, Assigned: padenot)

References

Details

(Keywords: crash, regression, Whiteboard: [games])

Crash Data

Attachments

(1 file, 3 obsolete files)

STR: - http://beta.unity3d.com/jonas/DT2/ - click play (no matter which one) Observed: Crash! Some crash reports of mine: bp-1b86e5e5-c646-45dc-afdb-1ca7e2150617 bp-08aacd1c-6220-445e-85fd-d5d1c2150617 Someone tested that and confirmed the crash: bp-6be4613f-2741-4278-bfd8-7f1542150617
Whiteboard: [games]
[Tracking Requested - why for this release]:
Severity: normal → critical
Keywords: crash
Adding a tracking flag for FF41. This does not repro on FF40.0a2 (2015-06-03). Added links in crash signature field.
Crash Signature: https://crash-stats.mozilla.com/report/index/1b86e5e5-c646-45dc-afdb-1ca7e2150617 https://crash-stats.mozilla.com/report/index/08aacd1c-6220-445e-85fd-d5d1c2150617
Crash Signature: https://crash-stats.mozilla.com/report/index/1b86e5e5-c646-45dc-afdb-1ca7e2150617 https://crash-stats.mozilla.com/report/index/08aacd1c-6220-445e-85fd-d5d1c2150617 → [@ mozilla::MediaStream::GraphImpl()]
Yeah we should null-check or something. I'll get to it on the plane tomorrow.
Assignee: nobody → padenot
Oops we need to null-check here, this can be called from the CC.
Attachment #8625165 - Flags: review?(karlt)
Attachment #8625157 - Attachment is obsolete: true
Attachment #8625157 - Flags: review?(karlt)
Comment on attachment 8625165 [details] [diff] [review] Update the AudioBufferSourceNode <=> PannerNode mapping when destroying AudioNodeStream. r= This approach looks good thanks, but should be adjusted to avoid adding inefficiency. >+ // Maybe we are destroying an AudioBufferSourceNode's stream. Update the >+ // panner <-> source mapping so we don't try to send the doppler to a >+ // destroyed stream. >+ if (Context()) { >+ Context()->UpdatePannerSource(); >+ } UpdatePannerSource() is not O(1) so this could be expensive if done for every node. It should be moved to AudioBufferSourceNode::DestroyMediaStream() override so that it is not called more often than currently. I would call UnregisterAudioBufferSourceNode() because UpdatePannerSource() is an implementation detail. The calls to UnregisterAudioBufferSourceNode() from ~AudioBufferSourceNode() and the AudioBufferSourceNode unlink code can now be removed, because DisconnectFromGraph() calls DestroyMediaStream(), and DisconnectFromGraph() is called from AudioBufferSourceNode unlink code and from AudioNode::Release().
Attachment #8625165 - Flags: review?(karlt) → review-
Is this what you had in mind ?
Attachment #8628272 - Flags: review?(karlt)
Attachment #8625165 - Attachment is obsolete: true
The previous fix was wrong and not complete. First I was updating the panner/node mapping right before destroying the stream, so the changes would not have been picked up. Then, we are computing the panner/source mapping using node connections, and not stream connections, because we're on the main thread, so we need to check if the node has a stream when deciding if a node is to be registered (nodes that don't have streams are finished, so it's okay to not adjust their doppler shift). With this, I've verified that the crash in comment 0 is fixed.
Attachment #8628608 - Flags: review?(karlt)
Attachment #8628272 - Attachment is obsolete: true
Attachment #8628272 - Flags: review?(karlt)
Comment on attachment 8628608 [details] [diff] [review] Update the AudioBufferSourceNode <=> PannerNode mapping when destroying AudioNodeStream. r= >+ // Check if this node is an AudioBufferSourceNode that still have a stream, >+ // which means it is still playing. Can you reword this please so as not to imply that it has necessarily started playing? Perhaps just "it has not finished playing".
Attachment #8628608 - Flags: review?(karlt) → review+
Blocks: 1179662
crashtest in bug 1179662
Flags: in-testsuite-
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla42
Comment on attachment 8628608 [details] [diff] [review] Update the AudioBufferSourceNode <=> PannerNode mapping when destroying AudioNodeStream. r= Approval Request Comment [Feature/regressing bug #]: bug 974089 [User impact if declined]: crash running game [Describe test coverage new/current, TreeHerder]: added new crashtest [Risks and why]: There is perhaps a small risk of ownership but the code is not so complex, so I don't think we've missed anything. [String/UUID change made/needed]: none.
Attachment #8628608 - Flags: approval-mozilla-aurora?
Comment on attachment 8628608 [details] [diff] [review] Update the AudioBufferSourceNode <=> PannerNode mapping when destroying AudioNodeStream. r= Approving for uplift to Aurora. A crash test was added to verify the fix.
Attachment #8628608 - Flags: approval-mozilla-aurora? → approval-mozilla-aurora+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: