Chromium for Android asserts with some WebGL content
Reported by
ijama...@gmail.com,
Jun 20 2016
|
||||
Issue descriptionSteps to reproduce the problem: 1. Build Chromium for Android (either the full browser, the content shell or the webview, all of them crash) 2. Install the Chromium APK on a device and open it 3. Introduce any of the following URLs http://vizor.io/phinguyen/peaceful http://vizor.io/edelblut/space-adventure 4. Wait somet time (around a minute). 5. The Chromium app crashes What is the expected behavior? The URLs should work without a crash. What went wrong? The app crashes. Here is some additional information about my build and the logcat: Chromium 53.0.2769.0 (Developer Build) unknown (32-bit) Revision ca0f1b48f3e9b523c5452223d6e46446121df4b5-refs/heads/master@{#399958} OS Android 5.0.2; SM-G920V Build/LRX22G Blink 537.36 (@ca0f1b48f3e9b523c5452223d6e46446121df4b5) JavaScript V8 5.3.234 User Agent Mozilla/5.0 (Linux; Android 5.0.2; SM-G920V Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2769.0 Mobile Safari/537.36 Command Line --use-mobile-user-agent --top-controls-show-threshold=0.5 --top-controls-hide-threshold=0.5 --use-mobile-user-agent --enable-begin-frame-scheduling --enable-pinch --enable-viewport --enable-overlay-scrollbar --validate-input-event-stream --disable-gpu-process-crash-limit --main-frame-resizes-are-orientation-changes --disable-composited-antialiasing --ui-prioritize-in-gpu-process --profiler-timing=0 --prerender-from-omnibox=enabled --enable-dom-distiller --flag-switches-begin --flag-switches-end --enable-instant-extended-api Executable Path No such file or directory Profile Path /data/data/org.chromium.chrome/app_chrome/Default Variations AsyncDns:AsyncDnsA ContextualSearch:OptOut CustomTabs:Enabled DataCompressionProxyLoFi:Enabled DataCompressionProxyPromoVisibility:Enabled DataReductionProxyServerExperiments:TamperDetection_enabled DataReductionProxyUseQuic:Enabled DisallowFetchForDocWrittenScriptsInMainFrame:DocumentWriteEvaluatorGroup EnableMediaThreadForMediaPlayback:Enabled ImeThread:Enabled LowPriorityIFrames:Enabled MainFrameBeforeActivation:Enabled MinidumpDirectoryObserver:ObserverExperimentGroup ModerateBindingOnBackgroundTabCreation:Enabled NetworkQualityEstimator:Enabled NonValidatingReloadOnRefreshContentV2:Enabled PageRevisitInstrumentation:Enabled PasswordManagerSettingsMigration:Enable PhysicalWeb:Enabled PreconnectMore:Enabled ProgressBarAnimationAndroid:SmoothAnimation QUIC:Enabled ReaderModeUI:AdaBoost SafeBrowsingAndroid:Enabled SchedulerExpensiveTaskBlocking:Enabled SpeculativeResourcePrefetching:v=1a:Prefetching=Enabled:Predictor=Url StrictSecureCookies:Enabled TokenBinding:TokenBinding UMA_EnableCellularLogUpload:Enabled_wo_sampling UnifiedMediaPipelineTrial:Enabled UpdateMenuItem:Enabled UsePredictorDNSQueue:Disabled V8CacheStrategiesForCacheStorage:none Crashed report ID: How much crashed? Whole browser Is it a problem with a plugin? N/A Did this work before? N/A Chrome version: 53.0.2769.0 (Developer Build) unknown (32-bit) Channel: n/a OS Version: 5.0.2 Flash Version: Shockwave Flash 21.0 r0
,
Jun 21 2016
More information about this crash: The log shows that there is an assert fail in the
third_party/WebKit/Source/modules/webaudio/DeferredTaskHandler.cpp
in the following method:
void DeferredTaskHandler::setAudioThreadToCurrentThread()
{
ASSERT(!isMainThread());
ThreadIdentifier thread = currentThread();
releaseStore(&m_audioThread, thread);
}
The ASSERT statement fails.
I have commented it out and then I get another crash in the
third_party/WebKit/Source/modules/webaudio/AudioListener.cpp
file inside the method
void AudioListener::updateState()
{
// This must be called from the audio thread in pre or post render phase of
// the graph processing. (AudioListener doesn't have access to the context
// to check for the audio thread.)
DCHECK(!isMainThread());
MutexTryLocker tryLocker(m_listenerLock);
if (tryLocker.locked()) {
FloatPoint3D currentPosition = position();
FloatPoint3D currentForward = orientation();
FloatPoint3D currentUp = upVector();
m_isListenerDirty = currentPosition != m_lastPosition
|| currentForward != m_lastForward
|| currentUp != m_lastUp;
if (m_isListenerDirty) {
m_lastPosition = currentPosition;
m_lastForward = currentForward;
m_lastUp = currentUp;
}
} else {
// Main thread must be updating the position, forward, or up vector;
// just assume the listener is dirty. At worst, we'll do a little more
// work than necessary for one rendering quantum.
m_isListenerDirty = true;
}
}
As the DCHECK fails too. If I commented it out too, the provided URLs do not crash.
Hope this could be of some help.
,
Jun 22 2016
I have tried to enable crash reporting on Chromium (Setting->Privacy->Usage and crash reports) but when I go to chrome://crashes it states that Crash reporting is not available in Chromium. I am new to crash reporting for Chromium so please, advice on how to provide a crash id or any more information.
,
Jun 28 2016
,
Jun 29 2016
I don't understand how this can happen. setAudioThreadToCurrentThread is called in exactly two places: AudioDestination::render and OfflineAudioDestinationHandler::renderIfNotSuspended. Both of these have asserts that they're being run in the audio thread, and there are not the main thread. sigbjornf: Any thoughts since you did some changes to this recently?
,
Jun 29 2016
I reckon this is issue 590108 resurfacing, we never fully understood why Android was failing in the first place, see comments >= #15.
,
Jun 30 2017
Issue has not been modified or commented on in the last 365 days, please re-open or file a new bug if this is still an issue. For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot |
||||
►
Sign in to add a comment |
||||
Comment 1 by pauljensen@chromium.org
, Jun 20 2016