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

Issue 741003 link

Starred by 5 users

Issue metadata

Status: Assigned
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android , iOS
Pri: 2
Type: Bug



Sign in to add a comment

FRE crashes on DCHECK if accepting TOS more than once.

Project Member Reported by tedc...@chromium.org, Jul 11 2017

Issue description

Chrome Version: 61 TOT
OS: Android

What steps will reproduce the problem?
(1) Clear data on Chrome
(2) Start Chrome and go through FRE
(3) Before accepting on final Sign-in page, go all the way back to the beginning
(4) Hit accept on the first screen for a second time.

What is the expected result?
It proceeds along happily.

What happens instead?
It crashes on a DCHECK

07-11 20:18:50.826 32616 32616 F chromium: [FATAL:metrics_reporting_default_state.cc(21)] Check failed: GetMetricsReportingDefaultState(local_state) == EnableMetricsDefault::DEFAULT_UNKNOWN (2 vs. 0)

Stack Trace:
  RELADDR   FUNCTION                                                                                                                    FILE:LINE
  00049db4  tgkill+12                                                                                                                   /system/lib/libc.so
  00047553  pthread_kill+34                                                                                                             /system/lib/libc.so
  0001d8a5  raise+10                                                                                                                    /system/lib/libc.so
  000193f1  __libc_android_abort+34                                                                                                     /system/lib/libc.so
  00017034  abort+4                                                                                                                     /system/lib/libc.so
  v------>  base::debug::(anonymous namespace)::DebugBreak()                                                                            src/base/debug/debugger_posix.cc:228
  00094f0b  base::debug::BreakDebugger()                                                                                                src/base/debug/debugger_posix.cc:258
  000a7ebf  logging::LogMessage::~LogMessage()                                                                                          src/base/logging.cc:784
  00798117  metrics::RecordMetricsReportingDefaultState(PrefService*, metrics::EnableMetricsDefault)                                    src/components/metrics/metrics_reporting_default_state.cc:20
  v------>  chrome::android::RecordMetricsReportingDefaultOptIn(_JNIEnv*, base::android::JavaParamRef<_jclass*> const&, unsigned char)  src/chrome/browser/android/metrics/uma_utils.cc:39
  00579de7  Java_org_chromium_chrome_browser_metrics_UmaUtils_nativeRecordMetricsReportingDefaultOptIn                                  src/out/Debug/gen/chrome/browser/jni_headers/chrome/jni/UmaUtils_jni.h:52
  001e5471  offset 0x5d4000                                                                                                             /data/data/com.google.android.apps.chrome/incremental-install-files/optimized-dexes/chrome.android.chrome_java.dex.dex

 
Components: Internals>Metrics
Owner: asvitk...@chromium.org
Status: Assigned (was: Available)
Specifically, RecordMetricsReportingDefaultOptIn() JNI is how this is called from Java.

Maybe we should only call this once we finish the FRE, as opposed to when advancing through the first screen.
Labels: M-62
Labels: -M-62 M-63
Probably won't get to this in M62.
I believe I hit a similar DCHECK on iOS. It's not clear to me how to workaround this?

[0927/103041.680314:FATAL:metrics_reporting_default_state.cc(21)] Check failed: GetMetricsReportingDefaultState(local_state) == EnableMetricsDefault::DEFAULT_UNKNOWN (2 vs. 0)
0   Chromium                            0x000000010f9ae00d base::debug::StackTrace::StackTrace(unsigned long) + 157
1   Chromium                            0x000000010f9ae04d base::debug::StackTrace::StackTrace(unsigned long) + 29
2   Chromium                            0x000000010f9acb0c base::debug::StackTrace::StackTrace() + 28
3   Chromium                            0x000000010fa12e0f logging::LogMessage::~LogMessage() + 479
4   Chromium                            0x000000010fa10965 logging::LogMessage::~LogMessage() + 21
5   Chromium                            0x0000000111a7c984 metrics::RecordMetricsReportingDefaultState(PrefService*, metrics::EnableMetricsDefault) + 212
6   Chromium                            0x000000010f76b543 __58+[WelcomeToChromeViewController defaultStatsCheckboxValue]_block_invoke + 51
7   libdispatch.dylib                   0x00000001224f62b5 _dispatch_client_callout + 8
8   libdispatch.dylib                   0x00000001224f7749 dispatch_once_f + 55
9   Chromium                            0x000000010f76b4d4 +[WelcomeToChromeViewController defaultStatsCheckboxValue] + 84
10  Chromium                            0x000000010f76bda0 -[WelcomeToChromeViewController loadView] + 224
11  UIKit                               0x000000011951dbd7 -[UIViewController loadViewIfRequired] + 195
12  UIKit                               0x000000011951e434 -[UIViewController view] + 27
13  UIKit                               0x00000001195738e2 -[UINavigationController preferredContentSize] + 197
14  UIKit                               0x00000001194f67c0 -[UIPresentationController preferredContentSizeDidChangeForChildContentContainer:] + 64
15  UIKit                               0x00000001194f2552 __56-[UIPresentationController runTransitionForCurrentState]_block_invoke + 109
16  UIKit                               0x000000011938f5c9 _runAfterCACommitDeferredBlocks + 318
17  UIKit                               0x000000011937ddad _cleanUpAfterCAFlushAndRunDeferredBlocks + 280
18  UIKit                               0x000000011939f07c __34-[UIApplication _firstCommitBlock]_block_invoke_2 + 155
19  CoreFoundation                      0x000000011b4c620c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
20  CoreFoundation                      0x000000011b4aaa3b __CFRunLoopDoBlocks + 203
21  CoreFoundation                      0x000000011b4aa214 __CFRunLoopRun + 1300
22  CoreFoundation                      0x000000011b4a9a89 CFRunLoopRunSpecific + 409
23  GraphicsServices                    0x00000001210909c6 GSEventRunModal + 62
24  UIKit                               0x00000001193837d0 UIApplicationMain + 159
25  Chromium                            0x000000010e79b503 (anonymous namespace)::RunUIApplicationMain(int, char**) + 371
26  Chromium                            0x000000010e79afe3 main + 419
27  libdyld.dylib                       0x000000012256ad81 start + 1

Labels: OS-iOS
This still seems to be crashing making testing on iOS difficult. Is there an ETA for a fix?
Cc: pkotw...@chromium.org bsazonov@chromium.org
 Issue 768514  has been merged into this issue.
Labels: -M-63 M-64
The iOS and Android changes to fix this will be different - since it involves changing where in the FRE flow we tell UMA about the default state. Basically, we need the flows such that we tell the UMA code only when things are finalized (whereas right now user can go back in the wizard and then go through it again to trigger that code to be called multiple times).

No eta on the fix, as there's a bunch of higher priority stuff on my plate that's taking precedence. Bumping milestone.

You can comment out the DCHECK locally if it's causing problems for you in the meantime.
Cc: pinkerton@chromium.org
Components: -Internals>Metrics Internals>Metrics>UMA
Labels: -M-64

Sign in to add a comment