Closed
Bug 1079810
Opened 10 years ago
Closed 10 years ago
Empty sound writes into speaker, cause serious power consumption
Categories
(Firefox OS Graveyard :: Gaia::Dialer, defect)
Tracking
(blocking-b2g:2.1+, b2g-v2.0 unaffected, b2g-v2.1 verified, b2g-v2.2 verified)
Tracking | Status | |
---|---|---|
b2g-v2.0 | --- | unaffected |
b2g-v2.1 | --- | verified |
b2g-v2.2 | --- | verified |
People
(Reporter: shawnjohnjr, Assigned: drs)
References
Details
(Whiteboard: [caf priority: p2][CR 741215])
Attachments
(4 files, 4 obsolete files)
150.79 KB,
text/plain
|
Details | |
7.51 MB,
application/x-rar
|
Details | |
7.50 MB,
application/x-rar
|
Details | |
6.05 KB,
patch
|
gsvelto
:
review+
bajaj
:
approval-gaia-v2.1+
|
Details | Diff | Splinter Review |
Empty sound writes into speaker. So if you hear carefully, speaker turned on.
If you connect with a2dp speaker, empty sound will write into a2dp speaker.
Gecko:c00a1604ca43cf8a2061d28101aab482760b2745
Gaia:a6c29cc2f048dc08a2f008322699368b7e5cd9b0
Reporter | ||
Updated•10 years ago
|
blocking-b2g: --- → 2.2?
Reporter | ||
Updated•10 years ago
|
OS: Linux → Gonk (Firefox OS)
Hardware: x86_64 → ARM
Reporter | ||
Updated•10 years ago
|
status-b2g-v2.1:
--- → unaffected
status-b2g-v2.2:
--- → affected
Reporter | ||
Comment 1•10 years ago
|
||
Even without connecting with a2dp speaker, you can hear "speaker" on the phone turns on. We really need to know which component did this.
Reporter | ||
Updated•10 years ago
|
Reporter | ||
Comment 2•10 years ago
|
||
I just found this also happened on current v2.1 now.
Reporter | ||
Comment 3•10 years ago
|
||
[Blocking Requested - why for this release]:
blocking-b2g: 2.2? → 2.1?
Reporter | ||
Updated•10 years ago
|
Summary: Empty sound writes into speaker → Empty sound writes into speaker, cause serious power consumption
Reporter | ||
Comment 4•10 years ago
|
||
[Blocking Requested - why for this release]:
1. Silent sound will be played all the time, even though no one is actually playing any sound
2. Power consumption is very high because speaker never turned off
It looks like upper layers continuously write audio data.
Comment 5•10 years ago
|
||
Found an audio track is keep playing.
Outputs dump:
- Output 2 dump:
Sampling rate: 48000
Format: 00000001
Channels: 00000003
Latency: 80
Flags 00000002
Devices 00000002
Stream volume refCount muteCount
00 1.000 00 00
01 0.501 01 00 <----------
02 1.000 00 00
03 1.000 00 00
04 1.000 00 00
05 1.000 00 00
06 -1.000 00 00
07 0.501 00 00
08 0.000 00 00
09 0.000 00 00
10 0.000 00 00
Reporter | ||
Updated•10 years ago
|
Keywords: regression
Reporter | ||
Updated•10 years ago
|
Comment 6•10 years ago
|
||
I just have a test on gecko master at flame device.
This version is ok
commit 79093724dce744f5ddc5234621607b1f14f7500c
Author: William Chen <wchen@mozilla.com>
Date: Tue Aug 26 20:19:56 2014 -0700
Bug 887541 - Implement web components event path and event retargeting. r=smaug
But fail on
commit e6fa29bd01f85eb8a4a69d573f81fb4e7cb568c3
Author: Randell Jesup <rjesup@jesup.org>
Date: Tue Aug 26 17:12:41 2014 +0200
Bug 848954 - Part 32 - Disable MSG sleep. r=padenot
This has a race somewhere, so we disable it for now.
The real fix will come from the Web Audio API Suspend API [0]
You can check by running this command
>> adb shell dumpsys media.audio_policy
and check the section:
===
Sampling rate: 44100
Format: 1
Channels: 00000003
Latency: 96
Flags 00000002
Devices 00000002
Stream volume refCount muteCount
00 1.000 00 00
01 0.501 01 00 <----normally, it should 0
02 1.000 00 00
03 1.000 00 00
04 1.000 00 00
05 1.000 00 00
06 -1.000 00 00
07 0.501 00 00
08 0.000 00 00
09 0.000 00 00
10 1.000 00 00
====
Comment 8•10 years ago
|
||
During boot-up,
Try to set Breakpoint on b2g at boot-up stage (The device does not enter the home screen):
, opensl_stream_init (ctx=0xadc88d00, stream=0xad49bdc4, stream_name=0xb6243a4b "AudioCallbackDriver", stream_params=<optimized out>, latency=42, data_callback=
0xb5732fd9 <mozilla::AudioCallbackDriver::DataCallback_s(cubeb_stream*, void*, void*, long)>, state_callback=0xb572b74f <mozilla::AudioCallbackDriver::StateCallback_s(cubeb_stream*, void*, cubeb_state)>,
user_ptr=0xad6ba800) at ../../../../gecko/media/libcubeb/src/cubeb_opensl.c:464
464 {
(gdb) bt
#0 opensl_stream_init (ctx=0xadc88d00, stream=0xad49bdc4, stream_name=0xb6243a4b "AudioCallbackDriver", stream_params=<optimized out>, latency=42,
data_callback=0xb5732fd9 <mozilla::AudioCallbackDriver::DataCallback_s(cubeb_stream*, void*, void*, long)>,
state_callback=0xb572b74f <mozilla::AudioCallbackDriver::StateCallback_s(cubeb_stream*, void*, cubeb_state)>, user_ptr=0xad6ba800) at ../../../../gecko/media/libcubeb/src/cubeb_opensl.c:464
#1 0xb5b69926 in cubeb_stream_init (context=0xadc88d00, stream=0xad49bdc4, stream_name=0xb6243a4b "AudioCallbackDriver", stream_params=..., latency=42,
data_callback=0xb5732fd9 <mozilla::AudioCallbackDriver::DataCallback_s(cubeb_stream*, void*, void*, long)>,
state_callback=0xb572b74f <mozilla::AudioCallbackDriver::StateCallback_s(cubeb_stream*, void*, cubeb_state)>, user_ptr=0xad6ba800) at ../../../../gecko/media/libcubeb/src/cubeb.c:205
#2 0xb57307d6 in mozilla::AudioCallbackDriver::Init (this=0xad6ba800) at ../../../gecko/content/media/GraphDriver.cpp:520
#3 0xb5730840 in mozilla::AsyncCubebTask::Run (this=0xad633960) at ../../../gecko/content/media/GraphDriver.cpp:433
#4 0xb4e50932 in ProcessNextEvent (aResult=0xad49be57, aMayWait=<optimized out>, this=0xad6486d0) at ../../../gecko/xpcom/threads/nsThread.cpp:769
#5 nsThread::ProcessNextEvent (this=0xad6486d0, aMayWait=<optimized out>, aResult=0xad49be57) at ../../../gecko/xpcom/threads/nsThread.cpp:684
#6 0xb4e5ebe6 in NS_ProcessNextEvent (aThread=<optimized out>, aMayWait=<optimized out>) at /home/randy-lin/b2g-flame/gecko/xpcom/glue/nsThreadUtils.cpp:265
#7 0xb4f9a874 in mozilla::ipc::MessagePumpForNonMainThreads::Run (this=0xad6fd1f0, aDelegate=0xad6e2440) at ../../../gecko/ipc/glue/MessagePump.cpp:326
#8 0xb4f8f47e in MessageLoop::RunInternal (this=<optimized out>) at ../../../gecko/ipc/chromium/src/base/message_loop.cc:229
#9 0xb4f8f530 in RunHandler (this=0xad6e2440) at ../../../gecko/ipc/chromium/src/base/message_loop.cc:222
#10 MessageLoop::Run (this=0xad6e2440) at ../../../gecko/ipc/chromium/src/base/message_loop.cc:196
#11 0xb4e53998 in nsThread::ThreadFunc (aArg=0xad6486d0) at ../../../gecko/xpcom/threads/nsThread.cpp:345
#12 0xb69a56a2 in _pt_root (arg=0xb0eb9980) at ../../../../../gecko/nsprpub/pr/src/pthreads/ptthread.c:212
#13 0xb6e70ba4 in __thread_entry (func=0xb69a5609 <_pt_root>, arg=0xb0eb9980, tls=0xad49bf00) at bionic/libc/bionic/pthread_create.cpp:92
#14 0xb6e70d20 in pthread_create (thread_out=0xbed5d5b4, attr=<optimized out>, start_routine=0x78, arg=0xb0eb9980) at bionic/libc/bionic/pthread_create.cpp:201
#15 0xad60cf50 in ?? ()
#16 0xad60cf50 in ?? ()
I also set break point on opensl_destroy(cubeb * ctx) and it doesn't hit this line.
Comment 9•10 years ago
|
||
Regression window was found, clear the whiteboard tag.
Keywords: regressionwindow-wanted
Updated•10 years ago
|
Component: AudioChannel → Video/Audio
Product: Firefox OS → Core
Comment 10•10 years ago
|
||
Someone is creating an AudioContext at boot time again, and should not. Break on mozilla::AudioContext::AudioContext and `call DumpJSStack()` to check what is causing this.
Note that there is a spec proposal [0] to add `suspend` and `resume` methods to the AudioContext, that will allow us to solve those issues in a nicer way, but it's not stable yet.
[0]: https://github.com/WebAudio/web-audio-api/issues/317
Flags: needinfo?(padenot)
Comment 11•10 years ago
|
||
Shawn, does this happen on 2.0? Trying to see if this is a recent regression or not against 2.0.
Flags: needinfo?(shuang)
Updated•10 years ago
|
blocking-b2g: 2.1? → 2.1+
Comment 12•10 years ago
|
||
Thanks Paul!
Find this js callstack:
Breakpoint 1, mozilla::dom::AudioContext::AudioContext (this=0xb0354fb0, aWindow=0xaf89f910, aIsOffline=<optimized out>, aChannel=mozilla::dom::Normal, aNumberOfChannels=0, aLength=0, aSampleRate=0)
at /home/randy-lin/b2g-flame/gecko/content/media/webaudio/AudioContext.cpp:94
94 printf("AudioContext::AudioContext\n");
(gdb) call DumpJSStack()
0 tp_ensureAudio() ["app://callscreen.gaiamobile.org/gaia_build_defer_index.js":81]
this = [object Object]
1 tp_setChannel(channel = "normal") ["app://callscreen.gaiamobile.org/gaia_build_defer_index.js":92]
this = [object Object]
2 tp_init(channel = "normal") ["app://callscreen.gaiamobile.org/gaia_build_defer_index.js":80]
this = [object Object]
3 kh_init(oncall = true) ["app://callscreen.gaiamobile.org/gaia_build_defer_index.js":99]
this = [object Object]
4 callSetup(evt = [object Event]) ["app://callscreen.gaiamobile.org/gaia_build_defer_index.js":10]
this = [object Window]
Reporter | ||
Comment 14•10 years ago
|
||
Tony,
I've tried v2.0, I did not see the same problem.
Flags: needinfo?(shuang)
Comment 15•10 years ago
|
||
Hi Ken,
Form c10 & c12 information, I won't take this.
I think gecko side won't have patch for this issue.
Flags: needinfo?(rlin)
Reporter | ||
Comment 16•10 years ago
|
||
It looks like callscreen callSetup had been called especially after powering on!
Reporter | ||
Comment 17•10 years ago
|
||
ni Etienne, it seems system app preloaded callscreen and cause AudioContext open.
Flags: needinfo?(etienne)
Updated•10 years ago
|
status-b2g-v2.0:
--- → unaffected
Updated•10 years ago
|
Comment 18•10 years ago
|
||
(In reply to Shawn Huang [:shawnjohnjr] from comment #17)
> ni Etienne, it seems system app preloaded callscreen and cause AudioContext
> open.
Not since bug 1061012 landed. (2.1 is marked fixed)
Flags: needinfo?(etienne)
Reporter | ||
Comment 19•10 years ago
|
||
Please find the logcat.txt, and search keyword "callsetup". This logcat has been captured from boot-up.
I've added log in apps/callscreen/js/index.js.
window.addEventListener('load', function callSetup(evt) {
window.removeEventListener('load', callSetup);
-
+ dump('--------------------callsetup----------------------------');
CallsHandler.setup();
AudioCompetingHelper.init('callscreen');
CallScreen.init();
Reporter | ||
Updated•10 years ago
|
Flags: needinfo?(etienne)
Reporter | ||
Comment 20•10 years ago
|
||
I'm pretty sure this is related to callscreen had been loaded during boot up. Etienne, can you confirm again?
Updated•10 years ago
|
Component: Video/Audio → Gaia::Dialer
Product: Core → Firefox OS
Comment 21•10 years ago
|
||
According to comment 20. If I am wrong, please change it back.
Assignee | ||
Updated•10 years ago
|
Assignee: nobody → drs.bugzilla
Target Milestone: --- → 2.1 S7 (24Oct)
Comment 22•10 years ago
|
||
Assignee | ||
Comment 23•10 years ago
|
||
(In reply to Randy Lin [:rlin] from comment #6)
> I just have a test on gecko master at flame device.
> This version is ok
> commit 79093724dce744f5ddc5234621607b1f14f7500c
> Author: William Chen <wchen@mozilla.com>
> Date: Tue Aug 26 20:19:56 2014 -0700
>
> Bug 887541 - Implement web components event path and event retargeting.
> r=smaug
>
> But fail on
>
> commit e6fa29bd01f85eb8a4a69d573f81fb4e7cb568c3
> Author: Randell Jesup <rjesup@jesup.org>
> Date: Tue Aug 26 17:12:41 2014 +0200
>
> Bug 848954 - Part 32 - Disable MSG sleep. r=padenot
>
> This has a race somewhere, so we disable it for now.
>
> The real fix will come from the Web Audio API Suspend API [0]
>
>
> You can check by running this command
> >> adb shell dumpsys media.audio_policy
> and check the section:
> ===
> Sampling rate: 44100
> Format: 1
> Channels: 00000003
> Latency: 96
> Flags 00000002
> Devices 00000002
> Stream volume refCount muteCount
> 00 1.000 00 00
> 01 0.501 01 00 <----normally, it should 0
> 02 1.000 00 00
> 03 1.000 00 00
> 04 1.000 00 00
> 05 1.000 00 00
> 06 -1.000 00 00
> 07 0.501 00 00
> 08 0.000 00 00
> 09 0.000 00 00
> 10 1.000 00 00
>
> ====
I checked into this. For starters, I'm not able to repro getting a refCount of 1 for any stream on bootup. However, when I open the Dialer, I then have a refCount of 1 until I kill it. Closing it is not enough.
The only place where an AudioContext is created during the lifetime of the Dialer app is here:
https://github.com/mozilla-b2g/gaia/blob/master/shared/js/dialer/tone_player.js#L33
When I close the Dialer app, I verified that all references to this AudioContext are released. So there should be a refCount of 0, but it stays at 1.
Randell, Paul, do you know what could be going on here?
Flags: needinfo?(rjesup)
Flags: needinfo?(padenot)
Can you take a memory report? It might show us what is holding it alive.
Flags: needinfo?(drs.bugzilla)
Assignee | ||
Comment 25•10 years ago
|
||
Of note:
11.78 MB (100.0%) -- explicit
├───4.69 MB (39.77%) -- js-non-window
│ ├──0.00 MB (00.01%) -- webaudio
│ │ ├──0.00 MB (00.00%) -- audio-node/AudioDestinationNode
│ │ │ ├──0.00 MB (00.00%) ── stream-objects
│ │ │ ├──0.00 MB (00.00%) ── dom-nodes
│ │ │ └──0.00 MB (00.00%) ── engine-objects
│ │ └──0.00 MB (00.00%) ── audiocontext
Flags: needinfo?(drs.bugzilla)
Assignee | ||
Comment 26•10 years ago
|
||
11.78 MB (100.0%) -- explicit
├───4.69 MB (39.77%) -- js-non-window
│ ├──0.00 MB (00.02%) -- webaudio
│ │ ├──0.00 MB (00.01%) -- audio-node/AudioDestinationNode
│ │ │ ├──0.00 MB (00.01%) ── stream-objects [2]
│ │ │ ├──0.00 MB (00.00%) ── dom-nodes [2]
│ │ │ └──0.00 MB (00.00%) ── engine-objects [2]
│ │ └──0.00 MB (00.00%) ── audiocontext [2]
These look more or less identical to me. Should I attach the full report generated by tools/get_about_memory.py?
Assignee | ||
Comment 27•10 years ago
|
||
Though if the [2] is the amount of references to that object, it might explain this.
Reporter | ||
Comment 28•10 years ago
|
||
On v2.1, I can easily hit the problem. new CallScreenWindow during boot-up.
dialer agent new CallScreenWindow
https://github.com/mozilla-b2g/gaia/blob/master/apps/system/js/dialer_agent.js#L114
Then
https://github.com/mozilla-b2g/gaia/blob/master/apps/callscreen/js/index.js#L11
KeypadManager.init
https://github.com/mozilla-b2g/gaia/blob/master/shared/js/dialer/keypad.js#L157
The same trace as Comment 12 showed.
No, it's not. Can you attach the entire directory? I'm interested in the CC logs.
Assignee | ||
Comment 30•10 years ago
|
||
Attachment #8508439 -
Attachment is obsolete: true
Assignee | ||
Comment 31•10 years ago
|
||
Attachment #8508441 -
Attachment is obsolete: true
The only thing I see holding alive the AudioContexts in the background log is devtools stuff ...
Found and displayed 6 paths.
Parsing gc-edges.1750.log. Done loading graph. Reversing graph. Done.
via PersistentRooted<JSObject *> :[FakeBackstagePass] --[ActorPool]--> [Proxy] --[private]--> [Function ActorPool] --[prototype]--> [Object] --[cleanup]--> [Function AP_cleanup] --[fun_environment]--> [Call] --[enclosing_environment]--> [Object] --[shape]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[base]--> [base_shape] --[getter]--> [Proxy] --[private]--> [Function Loader/load/descriptors<.Components] --[fun_environment]--> [Call] --[descriptors]--> [Object] --[loader]--> [Object] --[value]--> [Object] --[lazyRequireGetter]--> [Function loaderGlobals.loader.lazyRequireGetter] --[shape]--> [shape] --[base]--> [base_shape] --[parent]--> [FakeBackstagePass] --[DevToolsLoader]--> [Function DevToolsLoader] --[prototype]--> [Object] --[require]--> [Function DevToolsLoader.prototype.require] --[fun_environment]--> [Call] --[loaderModules]--> [Object] --[Debugger]--> [Proxy] --[private]--> [Function Debugger] --[prototype]--> [Debugger 0] --[**UNKNOWN SLOT 0**]--> [Frame 0] --[shape]--> [shape] --[base]--> [base_shape] --[getter]--> [Proxy] --[private]--> [Function .get] --[shape]--> [shape] --[base]--> [base_shape] --[parent]--> [Object] --[module]--> [Proxy] --[private]--> [Object] --[exports]--> [Object] --[ChromeDebuggerActor]--> [Proxy] --[private]--> [Function ChromeDebuggerActor] --[prototype]--> [Object] --[type]--> [type_object] --[type_proto]--> [Object] --[_clearSteppingHooks]--> [Function ThreadActor.prototype._clearSteppingHooks] --[fun_environment]--> [Call] --[DebuggerServer]--> [Object] --[addBrowserActors]--> [Function DebuggerServer.addBrowserActors] --[fun_environment]--> [Call] --[ChildDebuggerTransport]--> [Function ChildDebuggerTransport] --[prototype]--> [Object] --[close]--> [Function ChildDebuggerTransport.prototype.close] --[fun_environment]--> [Call] --[JSONPacket]--> [Function JSONPacket] --[shape]--> [shape] --[parent]--> [shape] --[base]--> [base_shape] --[parent]--> [Object] --[require]--> [Proxy] --[private]--> [Function require] --[resolve]--> [Function resolve] --[fun_environment]--> [Call] --[loader]--> [Object] --[sandboxes]--> [Object] --[resource://gre/modules/commonjs/sdk/util/object.js]--> [Proxy] --[private]--> [Object] --[shape]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[base]--> [base_shape] --[getter]--> [Proxy] --[private]--> [Function Loader/load/descriptors<.Components] --[fun_environment]--> [Call] --[descriptors]--> [Object] --[exports]--> [Object] --[value]--> [Object] --[extend]--> [Proxy] --[private]--> [Function extend] --[fun_environment]--> [Call] --[flatten]--> [Function flatten] --[fun_environment]--> [Call] --[enclosing_environment]--> [Object] --[shape]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[base]--> [base_shape] --[getter]--> [Proxy] --[private]--> [Function Loader/load/descriptors<.Components] --[fun_environment]--> [Call] --[descriptors]--> [Object] --[require]--> [Object] --[value]--> [Function require] --[fun_environment]--> [Call] --[modules]--> [Object] --[resource://gre/modules/commonjs/sdk/event/core.js]--> [Object] --[exports]--> [Object] --[count]--> [Proxy] --[private]--> [Function count] --[fun_environment]--> [Call] --[event]--> [Function namespace] --[fun_environment]--> [Call] --[map]--> [WeakMap b12e5190] --[WeakMap entry value]--> [Object] --[changed-toplevel-document]--> [Array] --[objectElements[0]]--> [Function WCA__onChangedToplevelDocument] --[**UNKNOWN SLOT 0**]--> [Object] --[registeredPool]--> [Object] --[_actors]--> [Object] --[conn0.child20/callWatcherActor4]--> [Object] --[_parentActor]--> [Object] --[_tabPool]--> [Object] --[conn]--> [Object] --[_extraPools]--> [Array] --[objectElements[4]]--> [Object] --[_actors]--> [Object] --[conn0.child20/obj30]--> [Object] --[obj]--> [Proxy] --[private]--> [Object b3c73340] --[**UNKNOWN SLOT 0**]--> [Debugger b135a400] --[WeakMap entry key]--> [AudioContext]
via PersistentRooted<JSObject *> :[FakeBackstagePass] --[DevToolsLoader]--> [Function DevToolsLoader] --[prototype]--> [Object] --[require]--> [Function DevToolsLoader.prototype.require] --[fun_environment]--> [Call] --[loaderModules]--> [Object] --[Debugger]--> [Proxy] --[private]--> [Function Debugger] --[prototype]--> [Debugger 0] --[**UNKNOWN SLOT 0**]--> [Frame 0] --[shape]--> [shape] --[base]--> [base_shape] --[getter]--> [Proxy] --[private]--> [Function .get] --[shape]--> [shape] --[base]--> [base_shape] --[parent]--> [Object] --[module]--> [Proxy] --[private]--> [Object] --[exports]--> [Object] --[ChromeDebuggerActor]--> [Proxy] --[private]--> [Function ChromeDebuggerActor] --[prototype]--> [Object] --[type]--> [type_object] --[type_proto]--> [Object] --[_clearSteppingHooks]--> [Function ThreadActor.prototype._clearSteppingHooks] --[fun_environment]--> [Call] --[DebuggerServer]--> [Object] --[addBrowserActors]--> [Function DebuggerServer.addBrowserActors] --[fun_environment]--> [Call] --[ChildDebuggerTransport]--> [Function ChildDebuggerTransport] --[prototype]--> [Object] --[close]--> [Function ChildDebuggerTransport.prototype.close] --[fun_environment]--> [Call] --[JSONPacket]--> [Function JSONPacket] --[shape]--> [shape] --[parent]--> [shape] --[base]--> [base_shape] --[parent]--> [Object] --[require]--> [Proxy] --[private]--> [Function require] --[resolve]--> [Function resolve] --[fun_environment]--> [Call] --[loader]--> [Object] --[sandboxes]--> [Object] --[resource://gre/modules/commonjs/sdk/util/object.js]--> [Proxy] --[private]--> [Object] --[shape]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[base]--> [base_shape] --[getter]--> [Proxy] --[private]--> [Function Loader/load/descriptors<.Components] --[fun_environment]--> [Call] --[descriptors]--> [Object] --[exports]--> [Object] --[value]--> [Object] --[extend]--> [Proxy] --[private]--> [Function extend] --[fun_environment]--> [Call] --[flatten]--> [Function flatten] --[fun_environment]--> [Call] --[enclosing_environment]--> [Object] --[shape]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[base]--> [base_shape] --[getter]--> [Proxy] --[private]--> [Function Loader/load/descriptors<.Components] --[fun_environment]--> [Call] --[descriptors]--> [Object] --[require]--> [Object] --[value]--> [Function require] --[fun_environment]--> [Call] --[modules]--> [Object] --[resource://gre/modules/commonjs/sdk/event/core.js]--> [Object] --[exports]--> [Object] --[count]--> [Proxy] --[private]--> [Function count] --[fun_environment]--> [Call] --[event]--> [Function namespace] --[fun_environment]--> [Call] --[map]--> [WeakMap b12e5190] --[WeakMap entry value]--> [Object] --[changed-toplevel-document]--> [Array] --[objectElements[0]]--> [Function WCA__onChangedToplevelDocument] --[**UNKNOWN SLOT 0**]--> [Object] --[registeredPool]--> [Object] --[_actors]--> [Object] --[conn0.child20/callWatcherActor4]--> [Object] --[_parentActor]--> [Object] --[_tabPool]--> [Object] --[conn]--> [Object] --[_extraPools]--> [Array] --[objectElements[4]]--> [Object] --[_actors]--> [Object] --[conn0.child20/obj30]--> [Object] --[obj]--> [Proxy] --[private]--> [Object b3c73340] --[**UNKNOWN SLOT 0**]--> [Debugger b135a400] --[WeakMap entry key]--> [AudioContext]
via PersistentRooted<JSObject *> :[FakeBackstagePass] --[DevToolsUtils]--> [Object] --[dumpn]--> [Proxy] --[private]--> [Function dumpn] --[shape]--> [shape] --[base]--> [base_shape] --[parent]--> [Object] --[shape]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[base]--> [base_shape] --[getter]--> [Proxy] --[private]--> [Function Loader/load/descriptors<.Components] --[fun_environment]--> [Call] --[descriptors]--> [Object] --[loader]--> [Object] --[value]--> [Object] --[lazyRequireGetter]--> [Function loaderGlobals.loader.lazyRequireGetter] --[shape]--> [shape] --[base]--> [base_shape] --[parent]--> [FakeBackstagePass] --[DevToolsLoader]--> [Function DevToolsLoader] --[prototype]--> [Object] --[require]--> [Function DevToolsLoader.prototype.require] --[fun_environment]--> [Call] --[loaderModules]--> [Object] --[Debugger]--> [Proxy] --[private]--> [Function Debugger] --[prototype]--> [Debugger 0] --[**UNKNOWN SLOT 0**]--> [Frame 0] --[shape]--> [shape] --[base]--> [base_shape] --[getter]--> [Proxy] --[private]--> [Function .get] --[shape]--> [shape] --[base]--> [base_shape] --[parent]--> [Object] --[module]--> [Proxy] --[private]--> [Object] --[exports]--> [Object] --[ChromeDebuggerActor]--> [Proxy] --[private]--> [Function ChromeDebuggerActor] --[prototype]--> [Object] --[type]--> [type_object] --[type_proto]--> [Object] --[_clearSteppingHooks]--> [Function ThreadActor.prototype._clearSteppingHooks] --[fun_environment]--> [Call] --[DebuggerServer]--> [Object] --[addBrowserActors]--> [Function DebuggerServer.addBrowserActors] --[fun_environment]--> [Call] --[ChildDebuggerTransport]--> [Function ChildDebuggerTransport] --[prototype]--> [Object] --[close]--> [Function ChildDebuggerTransport.prototype.close] --[fun_environment]--> [Call] --[JSONPacket]--> [Function JSONPacket] --[shape]--> [shape] --[parent]--> [shape] --[base]--> [base_shape] --[parent]--> [Object] --[require]--> [Proxy] --[private]--> [Function require] --[resolve]--> [Function resolve] --[fun_environment]--> [Call] --[loader]--> [Object] --[sandboxes]--> [Object] --[resource://gre/modules/commonjs/sdk/util/object.js]--> [Proxy] --[private]--> [Object] --[shape]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[base]--> [base_shape] --[getter]--> [Proxy] --[private]--> [Function Loader/load/descriptors<.Components] --[fun_environment]--> [Call] --[descriptors]--> [Object] --[exports]--> [Object] --[value]--> [Object] --[extend]--> [Proxy] --[private]--> [Function extend] --[fun_environment]--> [Call] --[flatten]--> [Function flatten] --[fun_environment]--> [Call] --[enclosing_environment]--> [Object] --[shape]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[base]--> [base_shape] --[getter]--> [Proxy] --[private]--> [Function Loader/load/descriptors<.Components] --[fun_environment]--> [Call] --[descriptors]--> [Object] --[require]--> [Object] --[value]--> [Function require] --[fun_environment]--> [Call] --[modules]--> [Object] --[resource://gre/modules/commonjs/sdk/event/core.js]--> [Object] --[exports]--> [Object] --[count]--> [Proxy] --[private]--> [Function count] --[fun_environment]--> [Call] --[event]--> [Function namespace] --[fun_environment]--> [Call] --[map]--> [WeakMap b12e5190] --[WeakMap entry value]--> [Object] --[changed-toplevel-document]--> [Array] --[objectElements[0]]--> [Function WCA__onChangedToplevelDocument] --[**UNKNOWN SLOT 0**]--> [Object] --[registeredPool]--> [Object] --[_actors]--> [Object] --[conn0.child20/callWatcherActor4]--> [Object] --[_parentActor]--> [Object] --[_tabPool]--> [Object] --[conn]--> [Object] --[_extraPools]--> [Array] --[objectElements[4]]--> [Object] --[_actors]--> [Object] --[conn0.child20/obj30]--> [Object] --[obj]--> [Proxy] --[private]--> [Object b3c73340] --[**UNKNOWN SLOT 0**]--> [Debugger b135a400] --[WeakMap entry key]--> [AudioContext]
via PersistentRooted<JSScript *> :[script resource://gre/modules/devtools/DevToolsUti] --[function]--> [Function] --[shape]--> [shape] --[base]--> [base_shape] --[parent]--> [FakeBackstagePass] --[DevToolsUtils]--> [Object] --[dumpn]--> [Proxy] --[private]--> [Function dumpn] --[shape]--> [shape] --[base]--> [base_shape] --[parent]--> [Object] --[shape]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[base]--> [base_shape] --[getter]--> [Proxy] --[private]--> [Function Loader/load/descriptors<.Components] --[fun_environment]--> [Call] --[descriptors]--> [Object] --[loader]--> [Object] --[value]--> [Object] --[lazyRequireGetter]--> [Function loaderGlobals.loader.lazyRequireGetter] --[shape]--> [shape] --[base]--> [base_shape] --[parent]--> [FakeBackstagePass] --[DevToolsLoader]--> [Function DevToolsLoader] --[prototype]--> [Object] --[require]--> [Function DevToolsLoader.prototype.require] --[fun_environment]--> [Call] --[loaderModules]--> [Object] --[Debugger]--> [Proxy] --[private]--> [Function Debugger] --[prototype]--> [Debugger 0] --[**UNKNOWN SLOT 0**]--> [Frame 0] --[shape]--> [shape] --[base]--> [base_shape] --[getter]--> [Proxy] --[private]--> [Function .get] --[shape]--> [shape] --[base]--> [base_shape] --[parent]--> [Object] --[module]--> [Proxy] --[private]--> [Object] --[exports]--> [Object] --[ChromeDebuggerActor]--> [Proxy] --[private]--> [Function ChromeDebuggerActor] --[prototype]--> [Object] --[type]--> [type_object] --[type_proto]--> [Object] --[_clearSteppingHooks]--> [Function ThreadActor.prototype._clearSteppingHooks] --[fun_environment]--> [Call] --[DebuggerServer]--> [Object] --[addBrowserActors]--> [Function DebuggerServer.addBrowserActors] --[fun_environment]--> [Call] --[ChildDebuggerTransport]--> [Function ChildDebuggerTransport] --[prototype]--> [Object] --[close]--> [Function ChildDebuggerTransport.prototype.close] --[fun_environment]--> [Call] --[JSONPacket]--> [Function JSONPacket] --[shape]--> [shape] --[parent]--> [shape] --[base]--> [base_shape] --[parent]--> [Object] --[require]--> [Proxy] --[private]--> [Function require] --[resolve]--> [Function resolve] --[fun_environment]--> [Call] --[loader]--> [Object] --[sandboxes]--> [Object] --[resource://gre/modules/commonjs/sdk/util/object.js]--> [Proxy] --[private]--> [Object] --[shape]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[base]--> [base_shape] --[getter]--> [Proxy] --[private]--> [Function Loader/load/descriptors<.Components] --[fun_environment]--> [Call] --[descriptors]--> [Object] --[exports]--> [Object] --[value]--> [Object] --[extend]--> [Proxy] --[private]--> [Function extend] --[fun_environment]--> [Call] --[flatten]--> [Function flatten] --[fun_environment]--> [Call] --[enclosing_environment]--> [Object] --[shape]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[base]--> [base_shape] --[getter]--> [Proxy] --[private]--> [Function Loader/load/descriptors<.Components] --[fun_environment]--> [Call] --[descriptors]--> [Object] --[require]--> [Object] --[value]--> [Function require] --[fun_environment]--> [Call] --[modules]--> [Object] --[resource://gre/modules/commonjs/sdk/event/core.js]--> [Object] --[exports]--> [Object] --[count]--> [Proxy] --[private]--> [Function count] --[fun_environment]--> [Call] --[event]--> [Function namespace] --[fun_environment]--> [Call] --[map]--> [WeakMap b12e5190] --[WeakMap entry value]--> [Object] --[changed-toplevel-document]--> [Array] --[objectElements[0]]--> [Function WCA__onChangedToplevelDocument] --[**UNKNOWN SLOT 0**]--> [Object] --[registeredPool]--> [Object] --[_actors]--> [Object] --[conn0.child20/callWatcherActor4]--> [Object] --[_parentActor]--> [Object] --[_tabPool]--> [Object] --[conn]--> [Object] --[_extraPools]--> [Array] --[objectElements[4]]--> [Object] --[_actors]--> [Object] --[conn0.child20/obj30]--> [Object] --[obj]--> [Proxy] --[private]--> [Object b3c73340] --[**UNKNOWN SLOT 0**]--> [Debugger b135a400] --[WeakMap entry key]--> [AudioContext]
via PersistentRooted<JSScript *> :[script resource://gre/modules/devtools/Loader.jsm:] --[objects[7]]--> [Block] --[enclosing_environment]--> [Function] --[shape]--> [shape] --[base]--> [base_shape] --[parent]--> [FakeBackstagePass] --[DevToolsLoader]--> [Function DevToolsLoader] --[prototype]--> [Object] --[require]--> [Function DevToolsLoader.prototype.require] --[fun_environment]--> [Call] --[loaderModules]--> [Object] --[Debugger]--> [Proxy] --[private]--> [Function Debugger] --[prototype]--> [Debugger 0] --[**UNKNOWN SLOT 0**]--> [Frame 0] --[shape]--> [shape] --[base]--> [base_shape] --[getter]--> [Proxy] --[private]--> [Function .get] --[shape]--> [shape] --[base]--> [base_shape] --[parent]--> [Object] --[module]--> [Proxy] --[private]--> [Object] --[exports]--> [Object] --[ChromeDebuggerActor]--> [Proxy] --[private]--> [Function ChromeDebuggerActor] --[prototype]--> [Object] --[type]--> [type_object] --[type_proto]--> [Object] --[_clearSteppingHooks]--> [Function ThreadActor.prototype._clearSteppingHooks] --[fun_environment]--> [Call] --[DebuggerServer]--> [Object] --[addBrowserActors]--> [Function DebuggerServer.addBrowserActors] --[fun_environment]--> [Call] --[ChildDebuggerTransport]--> [Function ChildDebuggerTransport] --[prototype]--> [Object] --[close]--> [Function ChildDebuggerTransport.prototype.close] --[fun_environment]--> [Call] --[JSONPacket]--> [Function JSONPacket] --[shape]--> [shape] --[parent]--> [shape] --[base]--> [base_shape] --[parent]--> [Object] --[require]--> [Proxy] --[private]--> [Function require] --[resolve]--> [Function resolve] --[fun_environment]--> [Call] --[loader]--> [Object] --[sandboxes]--> [Object] --[resource://gre/modules/commonjs/sdk/util/object.js]--> [Proxy] --[private]--> [Object] --[shape]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[base]--> [base_shape] --[getter]--> [Proxy] --[private]--> [Function Loader/load/descriptors<.Components] --[fun_environment]--> [Call] --[descriptors]--> [Object] --[exports]--> [Object] --[value]--> [Object] --[extend]--> [Proxy] --[private]--> [Function extend] --[fun_environment]--> [Call] --[flatten]--> [Function flatten] --[fun_environment]--> [Call] --[enclosing_environment]--> [Object] --[shape]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[base]--> [base_shape] --[getter]--> [Proxy] --[private]--> [Function Loader/load/descriptors<.Components] --[fun_environment]--> [Call] --[descriptors]--> [Object] --[require]--> [Object] --[value]--> [Function require] --[fun_environment]--> [Call] --[modules]--> [Object] --[resource://gre/modules/commonjs/sdk/event/core.js]--> [Object] --[exports]--> [Object] --[count]--> [Proxy] --[private]--> [Function count] --[fun_environment]--> [Call] --[event]--> [Function namespace] --[fun_environment]--> [Call] --[map]--> [WeakMap b12e5190] --[WeakMap entry value]--> [Object] --[changed-toplevel-document]--> [Array] --[objectElements[0]]--> [Function WCA__onChangedToplevelDocument] --[**UNKNOWN SLOT 0**]--> [Object] --[registeredPool]--> [Object] --[_actors]--> [Object] --[conn0.child20/callWatcherActor4]--> [Object] --[_parentActor]--> [Object] --[_tabPool]--> [Object] --[conn]--> [Object] --[_extraPools]--> [Array] --[objectElements[4]]--> [Object] --[_actors]--> [Object] --[conn0.child20/obj30]--> [Object] --[obj]--> [Proxy] --[private]--> [Object b3c73340] --[**UNKNOWN SLOT 0**]--> [Debugger b135a400] --[WeakMap entry key]--> [AudioContext]
via PersistentRooted<JSScript *> :[script resource://gre/modules/devtools/dbg-server.] --[function]--> [Function] --[fun_environment]--> [FakeBackstagePass] --[ActorPool]--> [Proxy] --[private]--> [Function ActorPool] --[prototype]--> [Object] --[cleanup]--> [Function AP_cleanup] --[fun_environment]--> [Call] --[enclosing_environment]--> [Object] --[shape]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[base]--> [base_shape] --[getter]--> [Proxy] --[private]--> [Function Loader/load/descriptors<.Components] --[fun_environment]--> [Call] --[descriptors]--> [Object] --[loader]--> [Object] --[value]--> [Object] --[lazyRequireGetter]--> [Function loaderGlobals.loader.lazyRequireGetter] --[shape]--> [shape] --[base]--> [base_shape] --[parent]--> [FakeBackstagePass] --[DevToolsLoader]--> [Function DevToolsLoader] --[prototype]--> [Object] --[require]--> [Function DevToolsLoader.prototype.require] --[fun_environment]--> [Call] --[loaderModules]--> [Object] --[Debugger]--> [Proxy] --[private]--> [Function Debugger] --[prototype]--> [Debugger 0] --[**UNKNOWN SLOT 0**]--> [Frame 0] --[shape]--> [shape] --[base]--> [base_shape] --[getter]--> [Proxy] --[private]--> [Function .get] --[shape]--> [shape] --[base]--> [base_shape] --[parent]--> [Object] --[module]--> [Proxy] --[private]--> [Object] --[exports]--> [Object] --[ChromeDebuggerActor]--> [Proxy] --[private]--> [Function ChromeDebuggerActor] --[prototype]--> [Object] --[type]--> [type_object] --[type_proto]--> [Object] --[_clearSteppingHooks]--> [Function ThreadActor.prototype._clearSteppingHooks] --[fun_environment]--> [Call] --[DebuggerServer]--> [Object] --[addBrowserActors]--> [Function DebuggerServer.addBrowserActors] --[fun_environment]--> [Call] --[ChildDebuggerTransport]--> [Function ChildDebuggerTransport] --[prototype]--> [Object] --[close]--> [Function ChildDebuggerTransport.prototype.close] --[fun_environment]--> [Call] --[JSONPacket]--> [Function JSONPacket] --[shape]--> [shape] --[parent]--> [shape] --[base]--> [base_shape] --[parent]--> [Object] --[require]--> [Proxy] --[private]--> [Function require] --[resolve]--> [Function resolve] --[fun_environment]--> [Call] --[loader]--> [Object] --[sandboxes]--> [Object] --[resource://gre/modules/commonjs/sdk/util/object.js]--> [Proxy] --[private]--> [Object] --[shape]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[base]--> [base_shape] --[getter]--> [Proxy] --[private]--> [Function Loader/load/descriptors<.Components] --[fun_environment]--> [Call] --[descriptors]--> [Object] --[exports]--> [Object] --[value]--> [Object] --[extend]--> [Proxy] --[private]--> [Function extend] --[fun_environment]--> [Call] --[flatten]--> [Function flatten] --[fun_environment]--> [Call] --[enclosing_environment]--> [Object] --[shape]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[parent]--> [shape] --[base]--> [base_shape] --[getter]--> [Proxy] --[private]--> [Function Loader/load/descriptors<.Components] --[fun_environment]--> [Call] --[descriptors]--> [Object] --[require]--> [Object] --[value]--> [Function require] --[fun_environment]--> [Call] --[modules]--> [Object] --[resource://gre/modules/commonjs/sdk/event/core.js]--> [Object] --[exports]--> [Object] --[count]--> [Proxy] --[private]--> [Function count] --[fun_environment]--> [Call] --[event]--> [Function namespace] --[fun_environment]--> [Call] --[map]--> [WeakMap b12e5190] --[WeakMap entry value]--> [Object] --[changed-toplevel-document]--> [Array] --[objectElements[0]]--> [Function WCA__onChangedToplevelDocument] --[**UNKNOWN SLOT 0**]--> [Object] --[registeredPool]--> [Object] --[_actors]--> [Object] --[conn0.child20/callWatcherActor4]--> [Object] --[_parentActor]--> [Object] --[_tabPool]--> [Object] --[conn]--> [Object] --[_extraPools]--> [Array] --[objectElements[4]]--> [Object] --[_actors]--> [Object] --[conn0.child20/obj30]--> [Object] --[obj]--> [Proxy] --[private]--> [Object b3c73340] --[**UNKNOWN SLOT 0**]--> [Debugger b135a400] --[WeakMap entry key]--> [AudioContext]
I guess pasting that in directly was a bad idea :/
Comment 34•10 years ago
|
||
Well, this is weird. The AudioContexts are kepts alive by the Web Audio Devtools. Are they even running ? Also, we see that they are referenced by WeakMaps (as they should if devtools are opened), so how are they kept alive ?
Flags: needinfo?(padenot)
Comment hidden (obsolete) |
Assignee | ||
Comment 37•10 years ago
|
||
New PR: https://github.com/mozilla-b2g/gaia/pull/25422
Actually, let's just land this on master and rebase bug 834530. From my previous patch:
(In reply to Doug Sherk (:drs) (use needinfo?) from comment #36)
> I was unable to repro the consequences of the original issue. But I was able
> to verify that we were indeed spawning an AudioContext on bootup.
Attachment #8509857 -
Attachment is obsolete: true
Attachment #8509857 -
Flags: review?(gsvelto)
Attachment #8509914 -
Flags: review?(gsvelto)
Updated•10 years ago
|
Flags: needinfo?(etienne)
Comment 38•10 years ago
|
||
Comment on attachment 8509914 [details] [diff] [review]
Don't initialize an AudioContext on Callscreen init.
Review of attachment 8509914 [details] [diff] [review]:
-----------------------------------------------------------------
r- because this approach doesn't work correctly, see below for more detail.
::: apps/communications/dialer/test/unit/tone_player_test.js
@@ +116,5 @@
> + suite('playSequence', function() {
> + setup(function() {
> + TonePlayer.init('normal');
> +
> + this.sinon.stub(TonePlayer, 'dummySound');
The dummySound() method is gone since we removed the workarounds after bug 848954 landed. This will always make the test fail.
::: shared/js/dialer/tone_player.js
@@ +16,5 @@
> _gainNode: null,
> _playingNodes: [],
>
> init: function tp_init(channel) {
> + this._channel = channel;
This change by itself doesn't work because in the case of the dialer for example we don't get a visibility event after initializing so when using the start() function we'll hit a null context. You might want to call ensureAudio() at the beginning of the start() function to ensure that the context is created.
@@ +21,4 @@
> },
>
> ensureAudio: function tp_ensureAudio() {
> + if (this._audioContext || !this._channel || document.hidden) {
I find this change risky: one of the callers of ensureAudio() expects it to ensure that a valid AudioContext is present. We shouldn't make that dependent on visibility and we don't need to if we properly discard the context when the app is hidden.
Attachment #8509914 -
Flags: review?(gsvelto) → review-
Assignee | ||
Comment 39•10 years ago
|
||
Updated PR.
The v2.1 version is slightly different but not enough to request independent review on. The only difference is this line:
https://github.com/mozilla-b2g/gaia/pull/25458/files#diff-1cbdeb40c5b9f3a8e7db473bf91fc33fR77
I'll manually uplift this once it lands on master and gets approval.
Attachment #8509914 -
Attachment is obsolete: true
Flags: needinfo?(rjesup)
Attachment #8510385 -
Flags: review?(gsvelto)
Comment 40•10 years ago
|
||
Comment on attachment 8510385 [details] [diff] [review]
Don't initialize an AudioContext on Callscreen init.
Review of attachment 8510385 [details] [diff] [review]:
-----------------------------------------------------------------
LGTM with an additional unit-test, see below.
::: apps/communications/dialer/test/unit/tone_player_test.js
@@ +82,5 @@
> +
> + assert.equal(MockAudioContext.instances.length, 1);
> + var ctx = MockAudioContext.instances[0];
> + assert.equal(ctx.mozAudioChannelType, 'normal');
> + });
nit: Let's add a test that ensures we instantiate a new context when calling TonePlayer.start() too.
Attachment #8510385 -
Flags: review?(gsvelto) → review+
Assignee | ||
Comment 41•10 years ago
|
||
Landed with additional unit test:
https://github.com/mozilla-b2g/gaia/commit/559626fb9e9f7ed8efadaed7dad42a1ea98a2894
Assignee | ||
Comment 42•10 years ago
|
||
Comment on attachment 8510385 [details] [diff] [review]
Don't initialize an AudioContext on Callscreen init.
[Approval Request Comment]
[Bug caused by] (feature/regressing bug #): Unknown. Possibly bug 848954, but we suspect that this just unmasked the underlying problem.
[User impact] if declined: Very quiet sound will go through speakers at all times, draining the battery.
[Testing completed]: Gabriele and I tested this.
[Risk to taking this patch] (and alternatives if risky): Low. Bug 834530 may also help here.
[String changes made]: None.
Attachment #8510385 -
Flags: approval-gaia-v2.1?(release-mgmt)
Assignee | ||
Comment 43•10 years ago
|
||
Shawn, Randy, please verify that this fixes the issue for you on master.
Flags: needinfo?(shuang)
Flags: needinfo?(rlin)
Comment 45•10 years ago
|
||
Hi Doug,
I can't find the refCont increases during the boot-up stage.
Version:
Gaia-Rev dedd8c658df4f83e19531098a74394a3bf9cd2ae
Gecko-Rev https://hg.mozilla.org/mozilla-central/rev/d8de0d7e52e0
Build-ID 20141023160203
Version 36.0a1
Device-Name flame
FW-Release 4.4.2
FW-Incremental eng.cltbld.20141023.191612
FW-Date Thu Oct 23 19:16:22 EDT 2014
Bootloader L1TC00011660
Flags: needinfo?(rlin)
Reporter | ||
Comment 46•10 years ago
|
||
Hi Doug,
I've tried your patch. Yes, that fixed the original problem for boot-up.
But I noticed that whenever you launched Dialer app, AudioContext will be created, as you mentioned previously. If user dial numbers and make some calls once, speaker turned on forever, it still can drain the battery, even Dialer app was been killed manually. I guess that will be another bug and needs to be followed up.
Flags: needinfo?(shuang)
Updated•10 years ago
|
Attachment #8510385 -
Flags: approval-gaia-v2.1?(release-mgmt) → approval-gaia-v2.1+
Assignee | ||
Comment 49•10 years ago
|
||
Whiteboard: NO_UPLIFT
Updated•10 years ago
|
Whiteboard: [CR 741215]
Updated•10 years ago
|
Whiteboard: [CR 741215] → [caf priority: p2][CR 741215]
Comment 51•10 years ago
|
||
Hi, I'm on latest 2.2 and I'm still suffering by those ticking sounds, during phone calls it is far from pleasant. Which bug tracks this (from my perspective) continuing problem? Thx...
Reporter | ||
Comment 52•10 years ago
|
||
(In reply to Marek Raida from comment #51)
> Hi, I'm on latest 2.2 and I'm still suffering by those ticking sounds,
> during phone calls it is far from pleasant. Which bug tracks this (from my
> perspective) continuing problem? Thx...
I'm not very sure the problem you have (ticking sounds)? But about AudioConext was created due to callscreen, you probably need to track bug 834530. bug 834530 seems to me a full solution.
You may open a bug to describe your ticking sounds problem in detail (with video).
Comment 53•10 years ago
|
||
Hmmm, I'll try to record it in some quiet environment, but it is definitely related to boot-up sequence (in my case), immediately after reboot sounds are there and it is related to some Wifi/GSM/interferration, because Flight mode solves the problem...
Comment 54•10 years ago
|
||
Veriried the issue is fixed on 2.2 and 2.1 Flame
Empty sound is not writing into
Device: Flame 2.2 Master KK
BuildID: 20141107073659
Gaia: 779f05fead3d009f6e7fe713ad0fea16b6f2fb31
Gecko: b62ccf3228ba
Gonk: 48835395daa6a49b281db62c50805bd6ca24077e
Version: 36.0a1 (2.2 Master)
Firmware: V188-1
User Agent: Mozilla/5.0 (Mobile; rv:36.0) Gecko/36.0 Firefox/36.0
Device: Flame 2.1 KK
BuildID: 20141107001205
Gaia: 6295f6acfe91c6ae659712747dd2b9c8f51d0339
Gecko: 8c23b4f2ba29
Gonk: 48835395daa6a49b281db62c50805bd6ca24077e
Version: 34.0 (2.1)
Firmware: V188-1
User Agent: Mozilla/5.0 (Mobile; rv:34.0) Gecko/34.0 Firefox/34.0
Status: RESOLVED → VERIFIED
QA Whiteboard: [QAnalyst-Triage?]
Flags: needinfo?(ktucker)
Updated•10 years ago
|
QA Whiteboard: [QAnalyst-Triage?] → [QAnalyst-Triage+]
Flags: needinfo?(ktucker)
Comment 55•10 years ago
|
||
Well, I reopened my elder issue https://bugzilla.mozilla.org/show_bug.cgi?id=1082630 with some fresh info about data interfering problem with some very bad, but at least some audio attached...
You need to log in
before you can comment on or make changes to this bug.
Description
•