Debugging does not work correctly when debugging on device with Mojave and chromium clang |
|||||||
Issue descriptionApp Version (from "Chrome Settings > About Chrome"): Top of tree (M72) iOS Version: iOS 12 Device: iPhones all Steps to reproduce: 1. compile Chrome iOS for device using Chromium version of clang 2. Debug using XCode 3. Add some breakpoint and do some "next step" Observed behavior: Execution flow is random and the instruction pointed by the debugger is not logical. Also variables are not accessible. Expected behavior: Debugging should work. Frequency: 5/5 Additional comments: the debugging seems to work correctly in any of this change: - compiling with xcode clang - using macOS High Sierra - debugging on iPhone Simulator
,
Nov 29
,
Nov 30
I don't think anyone on our team is set up to do iOS development to reproduce and debug this. =/ Has this workflow worked in the past? If so, can you provide a time window for the regression?
,
Nov 30
For me, it is early November. For Javierrobles who also has the issue, it was Thursday morning. Current hypothesis is that the trigger is the installation of macOS Mojave (at least, Javier installed it on Wednesday night, and we know it was working for him earlier this week). For me, this would also match even if I cannot be that precise. justincohen who also confirmed the issue, also has Mojave installed.
,
Dec 3
Bisecting on is.gd/chromeclang, I get: good: 344066 bad: 346074 There's a pretty big gap between those two. Any ideas before I have to do further bisect? bisecting this super time intensive since I have to build clang, then build chrome, all without goma...
,
Dec 3
Can you repro with base_unittests or even boringssl_ssl_tests? That builds somewhat quickly even without goma (the latter even more so than the former)
,
Dec 3
Yes, base_unittests.app on a device with --gtest_filter CRBProtocolObserversTest.WeakReference and set a bp at: base_unittests`::+[CRBWeakNSProtocolSentinel containerForObject:](id) + 212 at weak_nsobject.mm:39 As I step thru the code I jump from line 47 back to 46 un expectedly.
,
Dec 3
,
Dec 4
good: 345070
,
Dec 4
Looks like 347933 is already fixed, so whenever we do the next roll, this problem should be fixed. olivierrobin@ can you confirm this is fixed when rolling past 347933?
,
Dec 4
> olivierrobin@ can you confirm this is fixed when rolling past 347933? You can build with that by checking out and syncing Chromium #612660 / 0bdd3c25975f763d121802a092c1ef0925049976 (it was later reverted). That works with Goma too.
,
Dec 4
Tested with suggestions in 11-12 and it works fine.
,
Dec 4
,
Dec 21
This should be better now.
,
Jan 8
OK, the bad news is that the fix in 347933 seems to have been remove and I still have the issue with the latest 349417 I tested again and 347933 still works, but 348507 is already broken. So something must have been reverted in this range.
,
Jan 8
thakis/hans@ before I start doing local clang builds to test, do any changes in that range look suspect? Did we ever identify that was broken and then reverted before?
,
Jan 8
I think nobody found the root cause.
,
Jan 9
I did a bissect search (on a small code portion, so there may be other issues), but it seems that 348319 works, 348320 is broken. As 348320 is both a reland and makes changes to AArch64InstructionSelector.cpp, this may be a good candidate Rev 348320: [AArch64][GlobalISel] Re-enable selection of volatile loads. We previously disabled this in r323371 because of a bug where we selected an extending load, but didn't delete the old G_LOAD, resulting in two loads being generated for volatile loads. Since we now have dedicated G_SEXTLOAD/G_ZEXTLOAD operations, and that the tablegen patterns should no longer be able to select (ext(load x)) patterns, it should be safe to re-enable it. The old test case should still work as expected.
,
Jan 9
It sounds like it relands something removed in r323371, which is outside the regression window in comment 6. It also feels like an unlikely candidate to me...how confident are you in the bisection?
,
Jan 9
Not 100%, I had to take some shortcuts to not have to recompile chrome every time. I synced llvm and clang at 348319 and 348320 build clang (incrementally) rebuild a single file in Chrome and link and debug the app. When you do this, clang@348319, it works fine with clang@348320, it jumps on some steps. The bissect is OK KO Next Result 0 999999 347933 OK 347933 999999 348507 KO 347933 348507 348220 OK 348220 348507 348363 KO 348220 348363 348291 OK 348291 348363 348327 KO 348291 348327 348309 OK 348309 348327 348318 OK 348318 348327 348322 KO 348318 348322 348320 KO 348318 348320 348319 OK
,
Jan 9
(I put the breakpoints in the file I recompile every time).
,
Jan 10
|
|||||||
►
Sign in to add a comment |
|||||||
Comment 1 by kkhorimoto@chromium.org
, Nov 29Owner: justincohen@chromium.org
Status: Assigned (was: Untriaged)