New issue
Advanced search Search tips

Issue 772410 link

Starred by 5 users

Issue metadata

Status: Fixed
Owner:
Closed: Nov 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 1
Type: Bug

Blocking:
issue 160920
issue 772884



Sign in to add a comment

Callbacks stop coming from AUHAL after a sleep/wake cycle

Project Member Reported by ossu@chromium.org, Oct 6 2017

Issue description

Chrome Version       : <from About Google Chrome/Chromium>
OS version           : 10.12.6, but also earlier 

What steps will reproduce the problem?
Each AUHAL context is tracked during sleep/wake to (if necessary) stop and start the associated callback thread. This is done even if there are no active streams, as long as the device has at one point previously been opened by the application.

This tracking can sometimes execute out-of-order, causing the internal AUHAL state to go bad and the thread never restart. Chrome will still be able to open new streams on the device, but will never receive any more callbacks.

What is the expected result?
Putting the device to sleep should not cause a permanent problem in Chrome, requiring restart.

What happens instead?
No callbacks on a device, could be output or input.

 

Comment 1 by ossu@chromium.org, Oct 6 2017

Added this bug to track this specific cause of missing input or output, as well as possible workarounds for the problem. It has been reported to Apple. 

Comment 2 by tommi@chromium.org, Oct 6 2017

Labels: -Pri-3 Pri-1
Blocking: 772884
Project Member

Comment 4 by bugdroid1@chromium.org, Oct 10 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2f47f7f10b739f3dab4be68e972204a039e5ba82

commit 2f47f7f10b739f3dab4be68e972204a039e5ba82
Author: Oskar Sundbom <ossu@chromium.org>
Date: Tue Oct 10 17:47:42 2017

Serialize AUHAL Pause/Resume calls to workaround missing callbacks error

We do this by interposing dispatch_get_global_queue() and returning a
serial queue for the cases where we're called from two functions in
CoreAudio.

To avoid the costs introduced by interposing this globally, and in a
separate dylib, the code uses the private dyld_dynamic_interpose API.
If that API is not available on the system (OSX < 10.10), the code
does no interposing and the workaround is disabled.

Bug:  chromium:772410 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: Ie39e46fa5dee029b05ada190556853c5f6d5c658
Reviewed-on: https://chromium-review.googlesource.com/702375
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Reviewed-by: Tommi <tommi@chromium.org>
Commit-Queue: Oskar Sundbom <ossu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#507706}
[modify] https://crrev.com/2f47f7f10b739f3dab4be68e972204a039e5ba82/media/audio/BUILD.gn
[modify] https://crrev.com/2f47f7f10b739f3dab4be68e972204a039e5ba82/media/audio/mac/audio_manager_mac.cc
[add] https://crrev.com/2f47f7f10b739f3dab4be68e972204a039e5ba82/media/audio/mac/coreaudio_dispatch_override.cc
[add] https://crrev.com/2f47f7f10b739f3dab4be68e972204a039e5ba82/media/audio/mac/coreaudio_dispatch_override.h

Project Member

Comment 5 by bugdroid1@chromium.org, Oct 11 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6ef678b24cc0e952d03606e565eece4af5084adf

commit 6ef678b24cc0e952d03606e565eece4af5084adf
Author: Henrik Grunell <grunell@chromium.org>
Date: Wed Oct 11 19:37:42 2017

Feature flag for serialized CoreAudio pause/resume.

The serialization CL: https://chromium-review.googlesource.com/c/chromium/src/+/702375

Bug: 772884, 772410 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I950797024e8129cf6c782a457aa9a9106ee7704e
Reviewed-on: https://chromium-review.googlesource.com/708874
Reviewed-by: Robert Kaplow <rkaplow@chromium.org>
Reviewed-by: Tommi <tommi@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Henrik Grunell <grunell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#508072}
[modify] https://crrev.com/6ef678b24cc0e952d03606e565eece4af5084adf/media/audio/mac/audio_manager_mac.cc
[modify] https://crrev.com/6ef678b24cc0e952d03606e565eece4af5084adf/media/base/media_switches.cc
[modify] https://crrev.com/6ef678b24cc0e952d03606e565eece4af5084adf/media/base/media_switches.h
[modify] https://crrev.com/6ef678b24cc0e952d03606e565eece4af5084adf/testing/variations/fieldtrial_testing_config.json

Project Member

Comment 6 by bugdroid1@chromium.org, Oct 11 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/060745a5fc0dc7116334b6f4aa6864f3d8543c0d

commit 060745a5fc0dc7116334b6f4aa6864f3d8543c0d
Author: Oskar Sundbom <ossu@chromium.org>
Date: Wed Oct 11 21:57:40 2017

Added UMA stats for dispatch override initialization.

Bug:  chromium:772410 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I5113ad2e77ee6bf1b0307c5386484f584d97f4f7
Reviewed-on: https://chromium-review.googlesource.com/708817
Commit-Queue: Oskar Sundbom <ossu@chromium.org>
Reviewed-by: Robert Kaplow <rkaplow@chromium.org>
Reviewed-by: Henrik Grunell <grunell@chromium.org>
Reviewed-by: Tommi <tommi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#508136}
[modify] https://crrev.com/060745a5fc0dc7116334b6f4aa6864f3d8543c0d/media/audio/mac/coreaudio_dispatch_override.cc
[modify] https://crrev.com/060745a5fc0dc7116334b6f4aa6864f3d8543c0d/tools/metrics/histograms/enums.xml
[modify] https://crrev.com/060745a5fc0dc7116334b6f4aa6864f3d8543c0d/tools/metrics/histograms/histograms.xml

Project Member

Comment 7 by bugdroid1@chromium.org, Nov 8 2017

Labels: merge-merged-3202
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/18a4f63fd5dc592a6b31f2a832de145b151adbde

commit 18a4f63fd5dc592a6b31f2a832de145b151adbde
Author: Oskar Sundbom <ossu@chromium.org>
Date: Wed Nov 08 22:34:45 2017

Serialize AUHAL Pause/Resume calls to workaround missing callbacks error

We do this by interposing dispatch_get_global_queue() and returning a
serial queue for the cases where we're called from two functions in
CoreAudio.

To avoid the costs introduced by interposing this globally, and in a
separate dylib, the code uses the private dyld_dynamic_interpose API.
If that API is not available on the system (OSX < 10.10), the code
does no interposing and the workaround is disabled.

Bug:  chromium:772410 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: Ie39e46fa5dee029b05ada190556853c5f6d5c658
Reviewed-on: https://chromium-review.googlesource.com/702375
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Reviewed-by: Tommi <tommi@chromium.org>
Commit-Queue: Oskar Sundbom <ossu@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#507706}(cherry picked from commit 2f47f7f10b739f3dab4be68e972204a039e5ba82)
Reviewed-on: https://chromium-review.googlesource.com/759163
Reviewed-by: Christian Fremerey <chfremer@chromium.org>
Cr-Commit-Position: refs/branch-heads/3202@{#783}
Cr-Branched-From: fa6a5d87adff761bc16afc5498c3f5944c1daa68-refs/heads/master@{#499098}
[modify] https://crrev.com/18a4f63fd5dc592a6b31f2a832de145b151adbde/media/audio/BUILD.gn
[modify] https://crrev.com/18a4f63fd5dc592a6b31f2a832de145b151adbde/media/audio/mac/audio_manager_mac.cc
[add] https://crrev.com/18a4f63fd5dc592a6b31f2a832de145b151adbde/media/audio/mac/coreaudio_dispatch_override.cc
[add] https://crrev.com/18a4f63fd5dc592a6b31f2a832de145b151adbde/media/audio/mac/coreaudio_dispatch_override.h

Project Member

Comment 8 by bugdroid1@chromium.org, Nov 8 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f15e2317b4bc8f778ed5e569385bed2214e03a08

commit f15e2317b4bc8f778ed5e569385bed2214e03a08
Author: Henrik Grunell <grunell@chromium.org>
Date: Wed Nov 08 22:36:44 2017

Feature flag for serialized CoreAudio pause/resume.

The serialization CL: https://chromium-review.googlesource.com/c/chromium/src/+/702375

Bug: 772884, 772410 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I950797024e8129cf6c782a457aa9a9106ee7704e
Reviewed-on: https://chromium-review.googlesource.com/708874
Reviewed-by: Robert Kaplow <rkaplow@chromium.org>
Reviewed-by: Tommi <tommi@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Henrik Grunell <grunell@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#508072}(cherry picked from commit 6ef678b24cc0e952d03606e565eece4af5084adf)
Reviewed-on: https://chromium-review.googlesource.com/759256
Reviewed-by: Christian Fremerey <chfremer@chromium.org>
Cr-Commit-Position: refs/branch-heads/3202@{#784}
Cr-Branched-From: fa6a5d87adff761bc16afc5498c3f5944c1daa68-refs/heads/master@{#499098}
[modify] https://crrev.com/f15e2317b4bc8f778ed5e569385bed2214e03a08/media/audio/mac/audio_manager_mac.cc
[modify] https://crrev.com/f15e2317b4bc8f778ed5e569385bed2214e03a08/media/base/media_switches.cc
[modify] https://crrev.com/f15e2317b4bc8f778ed5e569385bed2214e03a08/media/base/media_switches.h
[modify] https://crrev.com/f15e2317b4bc8f778ed5e569385bed2214e03a08/testing/variations/fieldtrial_testing_config.json

Comment 9 by ossu@chromium.org, Nov 14 2017

Blocking: 160920

Comment 10 by ossu@chromium.org, Nov 15 2017

Status: Fixed (was: Started)
Marking this as fixed for now. There's no further development planned on our side.
Project Member

Comment 11 by bugdroid1@chromium.org, Nov 23 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2e59ea25a650ede297c7a60662c5397ccf989b13

commit 2e59ea25a650ede297c7a60662c5397ccf989b13
Author: Oskar Sundbom <ossu@chromium.org>
Date: Thu Nov 23 14:39:07 2017

Make SerializeCoreAudioPauseResume the default and remove flag

Bug:  772410 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: Idc6cb3547fb20b41a7f637840034161f2ecf26b2
Reviewed-on: https://chromium-review.googlesource.com/785211
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Jochen Eisinger <jochen@chromium.org>
Reviewed-by: Henrik Grunell <grunell@chromium.org>
Commit-Queue: Oskar Sundbom <ossu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#518933}
[modify] https://crrev.com/2e59ea25a650ede297c7a60662c5397ccf989b13/media/audio/mac/audio_manager_mac.cc
[modify] https://crrev.com/2e59ea25a650ede297c7a60662c5397ccf989b13/media/base/media_switches.cc
[modify] https://crrev.com/2e59ea25a650ede297c7a60662c5397ccf989b13/media/base/media_switches.h
[modify] https://crrev.com/2e59ea25a650ede297c7a60662c5397ccf989b13/testing/variations/fieldtrial_testing_config.json

Sign in to add a comment