New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 806344 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Feb 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 1
Type: Bug



Sign in to add a comment

ANR on Chrome 64

Reported by car...@instantbits.com, Jan 26 2018

Issue description

THIS TEMPLATE IS FOR FILING BUGS ON THE ANDROID SYSTEM WEBVIEW. GENERAL WEB BUGS SHOULD BE FILED USING A DIFFERENT TEMPLATE!

Device name: Nexus 6, Pixel XL
Android version: 7.1+
WebView version (from system settings -> Apps -> Android System WebView): Chrome 64.0.3282.123
Application: Web Video Caster
Application version: Several versions tested, all have the same issue. Current production and current beta as well. 

URLs (if applicable): http://icdrama.se/hk-drama/2864-lo-and-behold/

Open that url in web video caster and the entire app will freeze at somewhere between 50 to 75% of the page being loaded. 

Eventually Android will ask to kill it, here is the ANR

01-26 14:24:28.373 878-918/? E/zygote64: libdebuggerd_client: received packet of unexpected length from tombstoned: expected 128, received -1
01-26 14:24:28.376 738-738/? I//system/bin/tombstoned: intercept for pid 15545 and type kDebuggerdNativeBacktrace terminated: due to input
01-26 14:24:28.472 878-918/? E/ActivityManager: ANR in com.instantbits.cast.webvideo (com.instantbits.cast.webvideo/.WebBrowser)
                                                PID: 21087
                                                Reason: Input dispatching timed out (Waiting to send key event because the focused window has not finished processing all of the input events that were previously delivered to it.  Outbound queue length: 0.  Wait queue length: 1.)
                                                Load: 10.55 / 10.5 / 11.07
                                                CPU usage from 0ms to 16174ms later (2018-01-26 14:24:12.201 to 2018-01-26 14:24:28.374):
                                                  105% 21087/com.instantbits.cast.webvideo: 103% user + 1.6% kernel / faults: 2566 minor 2 major
                                                  9.7% 878/system_server: 5.6% user + 4.1% kernel / faults: 3764 minor 15 major
                                                  6.3% 17826/com.google.android.apps.nbu.files: 3.9% user + 2.4% kernel / faults: 1230 minor 2 major
                                                  4% 503/surfaceflinger: 1.7% user + 2.2% kernel / faults: 212 minor 1 major
                                                  3.1% 15545/com.android.chrome:sandboxed: 2.5% user + 0.6% kernel / faults: 2266 minor 2 major
                                                  2.9% 720/thermal-engine: 0.8% user + 2% kernel
                                                  2.7% 15523/de.twokit.castbrowser: 2.3% user + 0.4% kernel / faults: 2842 minor
                                                  0.8% 719/media.codec: 0.3% user + 0.4% kernel / faults: 3839 minor 8 major
                                                  1.3% 7/rcu_preempt: 0% user + 1.3% kernel
                                                  1.3% 669/android.hardware.wifi@1.0-service: 0.7% user + 0.6% kernel / faults: 7 minor
                                                  1.1% 680/kschedfreq:0: 0% user + 1.1% kernel
                                                  1.1% 7132/kworker/u8:2: 0% user + 1.1% kernel
                                                  0.9% 26495/kworker/u8:8: 0% user + 0.9% kernel
                                                  0.8% 1289/com.android.systemui: 0.6% user + 0.2% kernel / faults: 979 minor 10 major
                                                  0.8% 3993/adbd: 0.1% user + 0.6% kernel / faults: 435 minor
                                                  0.7% 17300/com.speedsoftware.rootexplorer: 0.3% user + 0.4% kernel / faults: 1 minor
                                                  0.6% 21380/kworker/0:5: 0% user + 0.6% kernel
                                                  0.5% 479/logd: 0.1% user + 0.4% kernel / faults: 3 minor
                                                  0.2% 1466/com.android.phone: 0.2% user + 0% kernel / faults: 1272 minor 1 major
                                                  0.5% 13313/com.google.android.gms: 0.4% user + 0.1% kernel / faults: 49 minor
                                                  0.5% 21196/com.android.chrome:sandboxed: 0.4% user + 0% kernel / faults: 6 minor
                                                  0.4% 29676/org.acestream.media: 0.4% user + 0% kernel / faults: 113 minor
                                                  0.4% 17/ksoftirqd/1: 0% user + 0.4% kernel
                                                  0.2% 6093/com.touchtype.swiftkey: 0.1% user + 0% kernel / faults: 800 minor
                                                  0% 2091/com.android.ims.rcsservice: 0% user + 0% kernel / faults: 1280 minor 2 major
                                                  0.3% 3/ksoftirqd/0: 0% user + 0.3% kernel
                                                  0.3% 132/kswapd0: 0% user + 0.3% kernel
                                                  0% 1431/com.quicinc.cne.CNEService: 0% user + 0% kernel / faults: 1159 minor 3 major
                                                  0% 2077/com.android.nfc: 0% user + 0% kernel / faults: 1372 minor 3 major
                                                  0.1% 2098/com.qualcomm.qti.rcsbootstraputil: 0% user + 0% kernel / faults: 1249 minor 4 major
                                                  0.2% 23/ksoftirqd/2: 0% user + 0.2% kernel
                                                  0.2% 50/smem_native_rpm: 0% user + 0.2% kernel
                                                  0.1% 714/media.extractor: 0% user + 0% kernel / faults: 1342 minor 1 major
                                                  0.2% 3722/VosTlshimRxThre: 0% user + 0.2% kernel
                                                  0.2% 4035/logcat: 0.1% user + 0.1% kernel
                                                  0% 1450/com.qualcomm.qti.telephonyservice: 0% user + 0% kernel / faults: 1471 minor 11 major
                                                  0% 2111/com.google.SSRestartDetector: 0% user + 0% kernel / faults: 1289 minor 1 major
                                                  0.1% 3721/VosMCThread: 0% user + 0.1% kernel
                                                  0.1% 8159/kworker/1:0: 0% user + 0.1% kernel
                                                  0.1% 19009/dnsmasq: 0% user + 0.1% kernel
                                                  0.1% 16/rcuc/1: 0% user + 0.1% kernel
                                                  0.1% 359/nanohub: 0% user + 0.1% kernel
                                                  0.1% 679/msm_irqbalance: 0% user + 0% kernel
                                                  0% 7839/kworker/u9:3: 0% user + 0% kernel
                                                  0% 13036/kworker/2:2: 0% user + 0% kernel
                                                  0% 13178/com.google.android.googlequicksearchbox:search: 0% user + 0% kernel / faults: 127 minor 3 major
                                                  0% 18049/kworker/u9:4: 0% user + 0% kernel
                                                  0.1% 21115/logcat: 0% user + 0% kernel / faults: 8 minor
                                                  0.1% 26312/com.nitroxenon.terrarium:remote: 0% user + 0% kernel / faults: 19 minor
                                                  0% 1//init: 0% user + 0% kernel / faults: 138 minor 2 major
                                                  0% 22/rcuc/2: 0% user + 0% kernel
                                                  0% 245/kgsl_worker_thr: 0% user + 0% kernel
                                                  0% 357/irq/478-nanohub: 0% user + 0% kernel
                                                  0% 614/netd: 0% user + 0% kernel / faults: 17 minor
                                                  0% 662/android.hardware.memtrack@1.0-service: 0% user + 0% kernel
                                                  0% 665/android.hardware.sensors@1.0-servic

 
Another site that this seems to happen under hdfilme.tv
Just realized this affects the Android System WebView 64 as well on Android 5+
Labels: Needs-triage-Mobile
Labels: Needs-Feedback
I could reproduce this locally, I see a lot of the following errors, could they be related?

01-29 11:18:25.931 20522 21289 W sunlabs.brazil.server.Connection: java.net.SocketTimeoutException: Read timed out
01-29 11:18:25.931 20522 21289 W sunlabs.brazil.server.Connection: 	at java.net.SocketInputStream.socketRead0(Native Method)
01-29 11:18:25.931 20522 21289 W sunlabs.brazil.server.Connection: 	at java.net.SocketInputStream.socketRead(SocketInputStream.java:119)
01-29 11:18:25.931 20522 21289 W sunlabs.brazil.server.Connection: 	at java.net.SocketInputStream.read(SocketInputStream.java:176)
01-29 11:18:25.931 20522 21289 W sunlabs.brazil.server.Connection: 	at java.net.SocketInputStream.read(SocketInputStream.java:144)
01-29 11:18:25.931 20522 21289 W sunlabs.brazil.server.Connection: 	at java.io.BufferedInputStream.fill(BufferedInputStream.java:248)
01-29 11:18:25.931 20522 21289 W sunlabs.brazil.server.Connection: 	at java.io.BufferedInputStream.read(BufferedInputStream.java:267)
01-29 11:18:25.931 20522 21289 W sunlabs.brazil.server.Connection: 	at java.io.FilterInputStream.read(FilterInputStream.java:83)
01-29 11:18:25.931 20522 21289 W sunlabs.brazil.server.Connection: 	at sunlabs.brazil.util.http.HttpInputStream.readLine(HttpInputStream.java:153)
01-29 11:18:25.931 20522 21289 W sunlabs.brazil.server.Connection: 	at sunlabs.brazil.util.http.HttpInputStream.readLine(HttpInputStream.java:128)
01-29 11:18:25.931 20522 21289 W sunlabs.brazil.server.Connection: 	at sunlabs.brazil.server.Request.getRequest(Request.java:759)
01-29 11:18:25.931 20522 21289 W sunlabs.brazil.server.Connection: 	at sunlabs.brazil.server.Connection.run(Connection.java:186)
01-29 11:18:25.931 20522 21289 W sunlabs.brazil.server.Connection: 	at java.lang.Thread.run(Thread.java:764)

Those are fairly normal errors, often unrelated to the webview, sometimes ad network stuff or other things the app is doing, but even when webview related, they don't freeze the app. It only started freezing on version version 64. 
Project Member

Comment 6 by sheriffbot@chromium.org, Jan 29 2018

Cc: gsennton@chromium.org
Labels: -Needs-Feedback
Thank you for providing more feedback. Adding requester "gsennton@chromium.org" to the cc list and removing "Needs-Feedback" label.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Cc: boliu@chromium.org tobiasjs@chromium.org
I'm not sure how to debug ANRs, Bo/Toby do you have any suggestions?

An alternative would be perform a bisection.

Comment 8 by boliu@chromium.org, Jan 30 2018

after the ANR dialog comes up, attach the traces.txt file here:
adb pull /data/anr/traces.txt
Was comment 8 for me or someone else?

Comment 10 by boliu@chromium.org, Jan 30 2018

that was reply to #7, but anyone who can reproduce this can do it

In that directory I only have a file called anr_2018-01-30-14-08-59-704 but when I try to pull it it says permission denied. My phone is not rooted. 

Comment 12 by boliu@chromium.org, Jan 30 2018

Not sure about root, but I have seen devices where that file isn't globally writable, which breaks this debug feature. Nexus/pixel should be ok though. It's supposed to be stacks of every jvm attached thread. Very useful to find where a the UI thread is hanging
This is on a Pixel XL. Do I have to enable something on developer settings?

Comment 14 by boliu@chromium.org, Jan 30 2018

Alas, you do need root :/
https://developer.android.com/topic/performance/vitals/anr.html#diagnosing_anrs

If you take a bugreport, it should contain the same info (and a lot more, including a lot more user-private things). Need the "VM TRACES AT LAST ANR" section.
Hope this is what you need. 
traces at anr.txt
285 KB View Download

Comment 16 by boliu@chromium.org, Jan 30 2018

Status: Available (was: Unconfirmed)
hmm, probably stuck in the synchronous IPC to the compositor thread. definitely worth investigating 

"main" prio=5 tid=1 Native
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x739b5610 self=0x7c2e6bea00
  | sysTid=3152 nice=-4 cgrp=default sched=0/0 handle=0x7cb32369a8
  | state=S schedstat=( 3240832805 2268822798 4513 ) utm=292 stm=31 core=0 HZ=100
  | stack=0x7fdd622000-0x7fdd624000 stackSize=8MB
  | held mutexes=
  kernel: __switch_to+0x88/0xbc
  kernel: futex_wait_queue_me+0xdc/0x168
  kernel: futex_wait+0xf4/0x21c
  kernel: do_futex+0x16c/0xb3c
  kernel: SyS_futex+0x98/0x1b0
  kernel: __sys_trace_return+0x0/0x4
  native: #00 pc 000000000001d82c  /system/lib64/libc.so (syscall+28)
  native: #01 pc 000000000006930c  /system/lib64/libc.so (pthread_cond_wait+96)
  native: #02 pc 00000000007afdf8  /data/app/com.chrome.beta-nPuxuRnSi-44Oo77vY2KjA==/base.apk (???)
  at org.chromium.ui.base.WindowAndroid.nativeOnVSync(Native method)
  at org.chromium.ui.base.WindowAndroid.access$700(WindowAndroid.java:134)
  at org.chromium.ui.base.WindowAndroid$1.onVSync$5166USJ75THMGSJFDLKNAR9FELKIULIJF5N66JBFDPKN8RRI7D52ILG_0(WindowAndroid.java:16)
  at org.chromium.ui.VSyncMonitor$1.doFrame(VSyncMonitor.java:22)
  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:909)
  at android.view.Choreographer.doCallbacks(Choreographer.java:723)
  at android.view.Choreographer.doFrame(Choreographer.java:655)
  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
  at android.os.Handler.handleCallback(Handler.java:790)
  at android.os.Handler.dispatchMessage(Handler.java:99)
  at android.os.Looper.loop(Looper.java:164)
  at android.app.ActivityThread.main(ActivityThread.java:6494)
  at java.lang.reflect.Method.invoke(Native method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

Comment 17 by boliu@chromium.org, Jan 30 2018

Components: Internals>Network>Cache
Ahh, the IO thread is hanging in some http cache thing. And a hanging IO thread just stops everything

A debug build earlier triggered a bunch of DCHECK crashes in that code earlier which I thought wasn't important. Doesn't seem to happen on chrome though, which is a bit odd.

This is the hanging stack I got when DCHECKs are disabled:

"Chrome_IOThread" prio=7 tid=61 Native
  | group="main" sCount=1 dsCount=0 obj=0x132130a0 self=0x9d5b0b00
  | sysTid=13562 nice=-4 cgrp=default sched=0/0 handle=0x8c443930
  | state=R schedstat=( 6780957311 279643580 5522 ) utm=671 stm=7 core=1 HZ=100
  | stack=0x8c347000-0x8c349000 stackSize=1014KB
  | held mutexes=
  native: #00 pc 000837fa  /data/app/com.google.android.webview-2/lib/arm/libnet.cr.so (_ZN3net9HttpCache11Transaction6DoLoopEi+485)
  native: #01 pc 00083ab1  /data/app/com.google.android.webview-2/lib/arm/libnet.cr.so (_ZN3net9HttpCache11Transaction4ReadEPNS_8IOBufferEiRKN4base17RepeatingCallbackIFviEEE+90)
  native: #02 pc 0012bcc3  /data/app/com.google.android.webview-2/lib/arm/libnet.cr.so (_ZN3net17URLRequestHttpJob11ReadRawDataEPNS_8IOBufferEi+54)
  native: #03 pc 0012cd1b  /data/app/com.google.android.webview-2/lib/arm/libnet.cr.so (_ZN3net13URLRequestJob17ReadRawDataHelperEPNS_8IOBufferEiRKN4base17RepeatingCallbackIFviEEE+30)
  native: #04 pc 0012c58d  /data/app/com.google.android.webview-2/lib/arm/libnet.cr.so (_ZN3net13URLRequestJob4ReadEPNS_8IOBufferEi+84)
  native: #05 pc 0012775d  /data/app/com.google.android.webview-2/lib/arm/libnet.cr.so (_ZN3net10URLRequest4ReadEPNS_8IOBufferEi+42)
  native: #06 pc 0027d4f3  /data/app/com.google.android.webview-2/lib/arm/libcontent.cr.so (_ZN7content14ResourceLoader8ReadMoreEb+22)
  native: #07 pc 0027d691  /data/app/com.google.android.webview-2/lib/arm/libcontent.cr.so (_ZN7content14ResourceLoader17PrepareToReadMoreEb+100)
  native: #08 pc 0027d611  /data/app/com.google.android.webview-2/lib/arm/libcontent.cr.so (_ZN7content14ResourceLoader13ResumeReadingEv+120)
  native: #09 pc 00012a97  /data/app/com.google.android.webview-2/lib/arm/libbase.cr.so (_ZN4base5debug13TaskAnnotator7RunTaskEPKcPNS_11PendingTaskE+98)
  native: #10 pc 0002758f  /data/app/com.google.android.webview-2/lib/arm/libbase.cr.so (_ZN4base11MessageLoop7RunTaskEPNS_11PendingTaskE+306)
  native: #11 pc 000278fb  /data/app/com.google.android.webview-2/lib/arm/libbase.cr.so (_ZN4base11MessageLoop6DoWorkEv+258)
  native: #12 pc 00028a51  /data/app/com.google.android.webview-2/lib/arm/libbase.cr.so (_ZN4base19MessagePumpLibevent3RunEPNS_11MessagePump8DelegateE+276)
  native: #13 pc 0003dac1  /data/app/com.google.android.webview-2/lib/arm/libbase.cr.so (_ZN4base7RunLoop3RunEv+42)
  native: #14 pc 001a258d  /data/app/com.google.android.webview-2/lib/arm/libcontent.cr.so (_ZN7content17BrowserThreadImpl11IOThreadRunEPN4base7RunLoopE+8)
  native: #15 pc 001a2673  /data/app/com.google.android.webview-2/lib/arm/libcontent.cr.so (_ZN7content17BrowserThreadImpl3RunEPN4base7RunLoopE+182)
  native: #16 pc 00060717  /data/app/com.google.android.webview-2/lib/arm/libbase.cr.so (_ZN4base6Thread10ThreadMainEv+182)
  native: #17 pc 0005c69f  /data/app/com.google.android.webview-2/lib/arm/libbase.cr.so (???)
  native: #18 pc 0003f45f  /system/lib/libc.so (_ZL15__pthread_startPv+30)
  native: #19 pc 00019b43  /system/lib/libc.so (__start_thread+6)
  (no managed stack frames)

The first DCHECK that failed was this:
https://cs.chromium.org/chromium/src/net/http/http_cache_transaction.cc?rcl=9b4b0badbfb6ffcd2fb57e1aa90ae9dd9e4c611b&l=398

Comment 18 by boliu@chromium.org, Jan 31 2018

Cc: jkarlin@chromium.org rdsmith@chromium.org
Labels: M-65 ReleaseBlock-Stable
Owner: shivanisha@chromium.org
Status: Assigned (was: Available)
+author and reviewers, relevant info in comment #17 above

Comment 19 by boliu@chromium.org, Jan 31 2018

Labels: -Pri-2 Pri-1
Ping. And forgot to bump priority
Cc: morlovich@chromium.org
 boliu@, Could you confirm what was the Chrome version used on getting the DCHECK and the error reproduced?
There have been a few fixes post the version mentioned in the bug description (64.0.3282.123) and it will be good to know if the issue is still coming in the latest Chrome version.

Comment 22 by boliu@chromium.org, Jan 31 2018

DCHECK error:
[FATAL:http_cache_transaction.cc(398)] Check failed: OK > shared_writing_error_ (0 vs. 0)

I'm building trunk right now: refs/heads/master@{#533271}
Do you believe this should be reproducible with Chrome (or Content shell), or is the standalone app needed? 

#23 I have only ever reproduced it with my app, not Chrome. 

Comment 25 by boliu@chromium.org, Jan 31 2018

I tired chrome on android stable release (64.0.3282.137, no DCHECKs obviously) on the same page and didn't see any issues.

Comment 26 by boliu@chromium.org, Jan 31 2018

I don't see any issues with just a simple webview wrapper app either, so must be that app only. Presumably has something to do webview's integration into the network stack for things like shouldInterceptRequest then.
I tried with Chromium build on trunk with DCHECKS enabled, but could not reproduce the issue. Both http://icdrama.se/hk-drama/2864-lo-and-behold/ and hdfilme.tv seem to be working fine. 
If I may give you some more insight into the issue. My app uses an http proxy. The issue only happens when using the proxy but only on Chrome/WebView 64. Does not happen on older WebView. 
Regarding comment #26: Just to confirm, does the dcheck happen with just a simple webview wrapper app but the ANR does not?

Comment 30 by boliu@chromium.org, Jan 31 2018

> My app uses an http proxy.

Oh, that sounds more likely to be related than shouldInterceptRequest then.

> Regarding comment #26: Just to confirm, does the dcheck happen with just a simple webview wrapper app but the ANR does not?

No DCHECK, no ANR with simple webview wrapper app
I do use shouldInterceptRequest heavily but I can leave shouldInterceptRequest alone and only disable the proxy and it works fine. The proxy alone seems to cause it. I just don't have any idea why, as far as I can tell I don't touch anything related to the WebView from the proxy code. 
Labels: Needs-Feedback
 carlos@instantbits.com: Could you please get the net internal logs when the issue is coming. Here are the instructions to get them: 
https://sites.google.com/a/chromium.org/dev/for-testers/providing-network-details
Just to be clear, I do this on chrome and then reproduce the issue on my app? Or do I somehow do this within my app?

Comment 34 by torne@chromium.org, Jan 31 2018

shivanisha@, WebView doesn't have net-internals and can't capture logs that way (though I'm not sure if there's another way to get the same data).
When you are working on the app, is it possible to open another tab in the app with one tab with the affected site and another tab with net internals? I am assuming the app has a chrome like interface for tabs where you can open 2 URLs, one in each tab, I am not sure though.


Also, if your are able to get the net internals logs successfully, it would be good to get the logs with and without proxy to be able to compare them.

Comment 37 by torne@chromium.org, Jan 31 2018

chrome:// URLs do not work in WebView at all unless specifically implemented as WebView features. If there's a way to get network logs it won't be something that's accessed via magic URLs; possibly with command line flags (which can only be used on debug builds of android, not user builds).
The command line flag to get netlogs is --log-net-log=/path/to/file
But it possibly wouldn't work in user build?

Comment 39 by torne@chromium.org, Jan 31 2018

Don't know if the implementation of that is compiled into webview or not, but in any case webview ignores all command line flags on user builds of android, and only reads custom flags on userdebug/eng devices. The emulator is a userdebug image, so it may work there, but external users don't generally have debug images for real devices unless they run custom builds of android.

Comment 40 by boliu@chromium.org, Jan 31 2018

apparently it supposed to work with the command line:
https://chromium-review.googlesource.com/c/chromium/src/+/674084/6/android_webview/browser/net/aw_url_request_context_getter.cc

I'll see if it actually does..
I have a fix here: https://chromium-review.googlesource.com/c/chromium/src/+/896145

This is what seems to be happening in the error scenario (case with proxy).
There was an extra Read being invoked by the consumer of HttpCache::Transaction and the transaction state machine was not handling it well (crashing with dcheck/infinite loop in DoLoop if dcheck disabled). The CL fixes the handling.

Comment 42 by boliu@chromium.org, Jan 31 2018

netlog with DCHECK enabled, so no idea if it actually captured the actual problem
netlog.json
324 KB View Download

Comment 43 by boliu@chromium.org, Jan 31 2018

and without DCHECK, after ANR and killing the app, still not sure if it captured everything though I suppose, if there is no explicit flush of the file..
netlog.json
332 KB View Download
Project Member

Comment 44 by bugdroid1@chromium.org, Feb 1 2018

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

commit ecc43a2f3233d5c3189f6fc79c13aa5f714c9e4c
Author: Shivani Sharma <shivanisha@chromium.org>
Date: Thu Feb 01 16:30:32 2018

HttpCache::Transaction::Read should be able to handle an extra Read.

There was an extra Read being invoked by the consumer of
HttpCache::Transaction in some cases and the transaction state machine
was not handling it well (crashing with dcheck/infinite loop in DoLoop).
This CL fixes the handling.
Tested that the unit test indeed asserts without the fix if dcheck is
enabled (if not, the DoLoop will go in an infinite loop since we were
entering it with next_state_ set as STATE_NONE and then in the while
loop setting it as STATE_UNSET).

Test: net_unittests --gtest_filter=HttpCache.SimpleGET_ExtraRead
Bug:  806344 
Change-Id: I8b9472b48b15ed9f6c2132863f66941010b7aa52
Reviewed-on: https://chromium-review.googlesource.com/896145
Commit-Queue: Shivani Sharma <shivanisha@chromium.org>
Reviewed-by: Josh Karlin <jkarlin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#533693}
[modify] https://crrev.com/ecc43a2f3233d5c3189f6fc79c13aa5f714c9e4c/net/http/http_cache_transaction.cc
[modify] https://crrev.com/ecc43a2f3233d5c3189f6fc79c13aa5f714c9e4c/net/http/http_cache_unittest.cc

Thank you for handling this so quickly. What version of chrome and webview should I see this fix? And how long might it take before they are released?

Thanks. 
Status: Fixed (was: Assigned)
Labels: Merge-TBD
[Auto-generated comment by a script] We noticed that this issue is targeted for M-65; it appears the fix may have landed after branch point, meaning a merge might be required. Please confirm if a merge is required here - if so add Merge-Request-65 label, otherwise remove Merge-TBD label. Thanks.
This will likely require merge to M65. As per process, will wait for the fix to be passed through either a Canary build or Dev channel release at least 24 hours and will then attach the merge label.
Labels: Merge-Request-65
Project Member

Comment 50 by sheriffbot@chromium.org, Feb 3 2018

Labels: -Merge-Request-65 Hotlist-Merge-Approved Merge-Approved-65
Your change meets the bar and is auto-approved for M65. Please go ahead and merge the CL to branch 3325 manually. Please contact milestone owner if you have questions.
Owners: cmasso@(Android), cmasso@(iOS), bhthompson@(ChromeOS), govind@(Desktop)

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Project Member

Comment 51 by bugdroid1@chromium.org, Feb 5 2018

Labels: -merge-approved-65 merge-merged-3325
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/54d14bc56e841fbf7717c4934d6d24d90cbd86da

commit 54d14bc56e841fbf7717c4934d6d24d90cbd86da
Author: Shivani Sharma <shivanisha@chromium.org>
Date: Mon Feb 05 15:42:59 2018

HttpCache::Transaction::Read should be able to handle an extra Read.

There was an extra Read being invoked by the consumer of
HttpCache::Transaction in some cases and the transaction state machine
was not handling it well (crashing with dcheck/infinite loop in DoLoop).
This CL fixes the handling.
Tested that the unit test indeed asserts without the fix if dcheck is
enabled (if not, the DoLoop will go in an infinite loop since we were
entering it with next_state_ set as STATE_NONE and then in the while
loop setting it as STATE_UNSET).

Test: net_unittests --gtest_filter=HttpCache.SimpleGET_ExtraRead
Bug:  806344 
Change-Id: I8b9472b48b15ed9f6c2132863f66941010b7aa52
Reviewed-on: https://chromium-review.googlesource.com/896145
Commit-Queue: Shivani Sharma <shivanisha@chromium.org>
Reviewed-by: Josh Karlin <jkarlin@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#533693}(cherry picked from commit ecc43a2f3233d5c3189f6fc79c13aa5f714c9e4c)
Reviewed-on: https://chromium-review.googlesource.com/901703
Reviewed-by: Shivani Sharma <shivanisha@chromium.org>
Cr-Commit-Position: refs/branch-heads/3325@{#297}
Cr-Branched-From: bc084a8b5afa3744a74927344e304c02ae54189f-refs/heads/master@{#530369}
[modify] https://crrev.com/54d14bc56e841fbf7717c4934d6d24d90cbd86da/net/http/http_cache_transaction.cc
[modify] https://crrev.com/54d14bc56e841fbf7717c4934d6d24d90cbd86da/net/http/http_cache_unittest.cc

Labels: -Merge-TBD
Could not reproduce the issue mentioned in #1 on 64.0.3282.123 , 65.0.3325.53 66.0.3342.3 & having Pixel2/OPM1.171023.021 with Web Video Caster / 4.1.13 .
Cc: -rdsmith@chromium.org

Sign in to add a comment