New issue
Advanced search Search tips

Issue 807283 link

Starred by 1 user

Issue metadata

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



Sign in to add a comment

QuicUrlUtilsTest.GetPushPromiseUrl (net_unittests) failing on Android Cronet Builder

Project Member Reported by dgn@chromium.org, Jan 30 2018

Issue description

Cleaned up test trace:

[CRASH] QuicUrlUtilsTest.GetPushPromiseUrl:
[ RUN      ] QuicUrlUtilsTest.GetPushPromiseUrl
[FATAL:jni_android.cc(137)] Failed to find class org/chromium/url/IDNStringUtil

[ERROR:test_suite.cc(298)] Currently running: QuicUrlUtilsTest.GetPushPromiseUrl

Stack Trace:
  RELADDR   FUNCTION                                                            FILE:LINE
  0116fe99  logging::LogMessage::~LogMessage()                                  //base/logging.cc:581:29
  01155407  base::android::GetClass(...)                                        //base/android/jni_android.cc:137:5
  01155457  base::android::LazyGetClass(...)                                    //base/android/jni_android.cc:152:15
  v------>  url::android::Java_IDNStringUtil_idnToASCII(_...)                   //out/Debug/gen/url/url_jni_headers/url/jni/IDNStringUtil_jni.h:44:3
  011e400f  url::IDNToASCII(...)                                                //url/url_canon_icu_alternatives_android.cc:28:0
  011df557  url::(anonymous namespace)::DoIDNHost(...)                          //url/url_canon_host.cc:177:8
  011df35f  url::(anonymous namespace)::DoComplexHost(...)                      //url/url_canon_host.cc:275:10
  011df135  bool url::(anonymous namespace)::DoHostSubstring<>(...)             //url/url_canon_host.cc:319:12
  011def6f  void url::(anonymous namespace)::DoHost<>(...)                      //url/url_canon_host.cc:344:7
  011def27  url::CanonicalizeHost(...)                                          //url/url_canon_host.cc:375:3
  010d0def  net::QuicUrlUtilsImpl::GetPushPromiseUrl(...)                       //net/quic/platform/impl/quic_url_utils_impl.cc:113:8
  00d57121  net::test::()::QuicUrlUtilsTest_GetPushPromiseUrl_Test::TestBody()  //net/quic/platform/api/quic_url_utils_test.cc:71:27
  01391cff  testing::Test::Run()                                                //third_party/googletest/src/googletest/src/gtest.cc:2473:5

Full trace:
https://logs.chromium.org/v/?s=chromium%2Fbb%2Fchromium.android%2FAndroid_Cronet_Builder__dbg_%2F7407%2F%2B%2Frecipes%2Fsteps%2Fnet_unittests%2F0%2Fstdout

Builder link:
https://uberchromegw.corp.google.com/i/chromium.android/builders/Android%20Cronet%20Builder%20%28dbg%29/builds/7407


Suspect CL:
https://chromium.googlesource.com/chromium/src/+/5ef6e5486091988a425032ef49fce9dc3d78c3f1
"Make PUSH_PROMISE headers URL-parsing more robust and conform to HTTP/2 spec"

wangyix@ can you please have a look?
 

Comment 1 by mef@chromium.org, Jan 30 2018

Components: Internals>Network>QUIC

Comment 2 by mef@chromium.org, Jan 30 2018

I've reproduced this locally, and can confirm that reverting https://chromium.googlesource.com/chromium/src/+/5ef6e5486091988a425032ef49fce9dc3d78c3f1 fixes the problem (it removes the crashin test). 

I'll be happy to help figure this out, but in the meanwhile, could we revert https://chromium.googlesource.com/chromium/src/+/5ef6e5486091988a425032ef49fce9dc3d78c3f1 to unblock Cronet trybots?

For reland you can add the following line to CL description to run on Cronet trybots:

Cq-Include-Trybots: master.tryserver.chromium.android:android_cronet_tester;master.tryserver.chromium.mac:ios-simulator-cronet

Comment 3 by dgn@chromium.org, Jan 30 2018

Thanks for looking into it! I'll just revert it now then.
It's already being reverted.

Comment 5 by mef@chromium.org, Jan 30 2018

Great! So, the problem is that Cronet uses IDNStringUtil.java for IDN conversion on Android (to avoid ICU dependencies). 

This is controlled by 'use_platform_icu_alternatives' gn flag, which is set to 'true' in Cronet builds.

Adding "//url:url_java", to //net:net deps on android if use_platform_icu_alternatives is set fixes the issue:

diff --git a/net/BUILD.gn b/net/BUILD.gn
index dd99fa75984e..37f9b72ae152 100644
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -2194,7 +2194,10 @@ component("net") {
       if (is_android) {
         # Use ICU alternative on Android.
         sources += [ "base/net_string_util_icu_alternatives_android.cc" ]
-        deps += [ ":net_jni_headers" ]
+        deps += [
+          ":net_jni_headers",
+          "//url:url_java",
+        ]

I would've expected that adding ":url_java" to public_deps of //url:url should have some effect, but for some reason it does NOT work:

diff --git a/url/BUILD.gn b/url/BUILD.gn
index d33801bc8ae8..2dcd015a6080 100644
--- a/url/BUILD.gn
+++ b/url/BUILD.gn
@@ -83,6 +83,7 @@ component("url") {
         "//base",
         "//base/third_party/dynamic_annotations",
       ]
+      public_deps = [ ":url_java" ]
     } else if (is_ios) {
       sources += [ "url_canon_icu_alternatives_ios.mm" ]
     } else {

Comment 6 by mef@chromium.org, Jan 30 2018

Cc: jbudorick@chromium.org agrieve@chromium.org rsleevi@chromium.org
I'm not quite sure what's going on, but I've played with it a little more and it appears that the following steps DO NOT fix the issue:

1. Adding //url:url_java to public_deps of //url:url
2. Adding //url:url_java to deps of //net:net
3. Adding //url:url to deps of //net:net
4. Adding //url:url to deps of //net:net_unittests

The following DOES fix the issue:

5. Adding //url:url_java to deps of //net:net_unittests

The CL with the fix that appears to work: https://chromium-review.googlesource.com/c/chromium/src/+/893681

I'm adding few folks who may know the explanation and suggest proper fix.
Java deps will only be noticed when they are added as deps to java targets. Add a *_java target as a dep to a native target (component / static_library / source_set) will cause the target to get compiled, but not to get included in the apk.

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

I think comment 7 explains it - //net:net is a "component", so its dependency on //url:url_java doesn't get noticed.

The //net:net_unittests is a "test" but does notice //url:url_java if it is added explicitly. The net_unittests target has explicit dependency on net_java: https://cs.chromium.org/chromium/src/net/BUILD.gn?l=5660 so it is consistent.

Does it mean that https://chromium-review.googlesource.com/c/chromium/src/+/893681 is a reasonable fix or should I remove "//url:url_java" from deps of //net:net as it is ignored anyway?



You should remove it from the component.
Otherwise fix lgtm
Project Member

Comment 11 by bugdroid1@chromium.org, Jan 30 2018

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

commit 1722162ab0c760774720a2bbc3aa3b73d6b7db70
Author: Misha Efimov <mef@chromium.org>
Date: Tue Jan 30 23:36:02 2018

Add //url:url_java to //net:net_unittests deps for Cronet Android builds.

Bug:  807283 
Cq-Include-Trybots: master.tryserver.chromium.android:android_cronet_tester;master.tryserver.chromium.mac:ios-simulator-cronet
Change-Id: Ia61bdc85b5f700d58f88cc3093826d0a7e0ce014
Reviewed-on: https://chromium-review.googlesource.com/893681
Commit-Queue: Misha Efimov <mef@chromium.org>
Reviewed-by: Ryan Hamilton <rch@chromium.org>
Cr-Commit-Position: refs/heads/master@{#533082}
[modify] https://crrev.com/1722162ab0c760774720a2bbc3aa3b73d6b7db70/net/BUILD.gn

Comment 12 by mef@chromium.org, Jan 31 2018

Owner: mef@chromium.org
Status: Fixed (was: Assigned)
Project Member

Comment 13 by bugdroid1@chromium.org, Jan 31 2018

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

commit a54f0b52ea196f56565b6286f1d92689b27da50e
Author: Yixin Wang <wangyix@chromium.org>
Date: Wed Jan 31 05:43:18 2018

Reland x2 "Make PUSH_PROMISE headers URL-parsing more robust and conform to HTTP/2 spec"

net_unittest failure on android_cronet due to missing test app dependency should no longer occur after this CL:
https://chromium-review.googlesource.com/c/chromium/src/+/893681

First reland: https://chromium-review.googlesource.com/c/chromium/src/+/891302
Original CL: https://chromium-review.googlesource.com/c/chromium/src/+/887970

Bug:807283

Cq-Include-Trybots: master.tryserver.chromium.android:android_cronet_tester;master.tryserver.chromium.mac:ios-simulator-cronet
Change-Id: I622f074ad3d3ec89b78d754367285da52850e527
Reviewed-on: https://chromium-review.googlesource.com/893625
Reviewed-by: Ryan Hamilton <rch@chromium.org>
Commit-Queue: Yixin Wang <wangyix@chromium.org>
Cr-Commit-Position: refs/heads/master@{#533213}
[modify] https://crrev.com/a54f0b52ea196f56565b6286f1d92689b27da50e/net/BUILD.gn
[modify] https://crrev.com/a54f0b52ea196f56565b6286f1d92689b27da50e/net/quic/chromium/quic_http_stream_test.cc
[modify] https://crrev.com/a54f0b52ea196f56565b6286f1d92689b27da50e/net/quic/core/quic_client_promised_info_test.cc
[modify] https://crrev.com/a54f0b52ea196f56565b6286f1d92689b27da50e/net/quic/core/quic_client_push_promise_index.cc
[modify] https://crrev.com/a54f0b52ea196f56565b6286f1d92689b27da50e/net/quic/core/quic_client_push_promise_index_test.cc
[modify] https://crrev.com/a54f0b52ea196f56565b6286f1d92689b27da50e/net/quic/core/quic_spdy_client_session_base.cc
[modify] https://crrev.com/a54f0b52ea196f56565b6286f1d92689b27da50e/net/quic/core/spdy_utils.cc
[modify] https://crrev.com/a54f0b52ea196f56565b6286f1d92689b27da50e/net/quic/core/spdy_utils.h
[modify] https://crrev.com/a54f0b52ea196f56565b6286f1d92689b27da50e/net/quic/core/spdy_utils_test.cc
[modify] https://crrev.com/a54f0b52ea196f56565b6286f1d92689b27da50e/net/quic/platform/api/quic_url_utils.cc
[modify] https://crrev.com/a54f0b52ea196f56565b6286f1d92689b27da50e/net/quic/platform/api/quic_url_utils.h
[add] https://crrev.com/a54f0b52ea196f56565b6286f1d92689b27da50e/net/quic/platform/api/quic_url_utils_test.cc
[modify] https://crrev.com/a54f0b52ea196f56565b6286f1d92689b27da50e/net/quic/platform/impl/quic_url_utils_impl.cc
[modify] https://crrev.com/a54f0b52ea196f56565b6286f1d92689b27da50e/net/quic/platform/impl/quic_url_utils_impl.h
[modify] https://crrev.com/a54f0b52ea196f56565b6286f1d92689b27da50e/net/tools/quic/quic_spdy_client_session_test.cc

Sign in to add a comment