New issue
Advanced search Search tips

Issue 839176 link

Starred by 1 user

Issue metadata

Status: WontFix
Owner: ----
Closed: May 2018
Cc:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 1
Type: Bug



Sign in to add a comment

Clang PDBs Lose Private Status, Losing Symbols for the Binary

Project Member Reported by robliao@chromium.org, May 3 2018

Issue description

Target: interactive_ui_tests
Command Line:  out\Debug\interactive_ui_tests.exe --single_process --gtest_filter=CommandsApiTest.Basic

Windbg Version: 10.0.16299.15 X86

GN flags:
is_debug = true
is_component_build = true
enable_nacl = false
target_cpu = "x86"
is_official_build = false
use_goma = false
is_clang = true
media_use_ffmpeg = false
use_jumbo_build = true



Session:

3:091> lmvm interactive_ui_tests
Browse full module list
start    end        module name
010b0000 0d26c000   interactive_ui_tests C (pdb symbols)          E:\src\out\Debug\interactive_ui_tests.exe.pdb
    Loaded symbol image file: E:\src\out\Debug\interactive_ui_tests.exe
    Image path: interactive_ui_tests.exe
    Image name: interactive_ui_tests.exe
    Browse all global symbols  functions  data
    Timestamp:        Mon Apr 30 15:32:30 2018 (5AE7997E)
    CheckSum:         00000000
    ImageSize:        0C1BC000
    File version:     68.0.3410.0
    Product version:  68.0.3410.0
    File flags:       1 (Mask 17) Debug
    File OS:          4 Unknown Win32
    File type:        1.0 App
    File date:        00000000.00000000
    Translations:     0409.04b0
    CompanyName:      The Chromium Authors
    ProductName:      Chromium
    InternalName:     other_test_file
    OriginalFilename: other_test_file
    ProductVersion:   68.0.3410.0
    FileVersion:      68.0.3410.0
    FileDescription:  Chromium
    LegalCopyright:   Copyright 2017 The Chromium Authors. All rights reserved.
3:091> bp interactive_ui_tests!extensions::RequestSender::StartRequest
Couldn't resolve error at 'interactive_ui_tests!extensions::RequestSender::StartRequest'

The above line is unexpected as this was just successfully set in process 4.


3:091> |4s
eax=00000000 ebx=221ff824 ecx=00000004 edx=00000000 esi=00000000 edi=000004b4
eip=7790e84c esp=221ff79c ebp=221ff80c iopl=0         nv up ei pl nz na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000206
ntdll!NtWaitForSingleObject+0xc:
7790e84c c20c00          ret     0Ch
4:053> lmvm interactive_ui_tests
Browse full module list
start    end        module name
010b0000 0d26c000   interactive_ui_tests C (private pdb symbols)  E:\src\out\Debug\interactive_ui_tests.exe.pdb
    Loaded symbol image file: E:\src\out\Debug\interactive_ui_tests.exe
    Image path: interactive_ui_tests.exe
    Image name: interactive_ui_tests.exe
    Browse all global symbols  functions  data
    Timestamp:        Mon Apr 30 15:32:30 2018 (5AE7997E)
    CheckSum:         00000000
    ImageSize:        0C1BC000
    File version:     68.0.3410.0
    Product version:  68.0.3410.0
    File flags:       1 (Mask 17) Debug
    File OS:          4 Unknown Win32
    File type:        1.0 App
    File date:        00000000.00000000
    Translations:     0409.04b0
    CompanyName:      The Chromium Authors
    ProductName:      Chromium
    InternalName:     other_test_file
    OriginalFilename: other_test_file
    ProductVersion:   68.0.3410.0
    FileVersion:      68.0.3410.0
    FileDescription:  Chromium
    LegalCopyright:   Copyright 2017 The Chromium Authors. All rights reserved.
4:053> bl
     2 e Disable Clear  03fb0230     0001 (0001)  4:**** interactive_ui_tests!extensions::RequestSender::StartRequest

Reloading interactive_ui_tests in the debugger does not fix the issue.

I've encountered a symptom of this off and on with periodic restarts in the same windbg session. I've never encountered this sort of discrepancy in MSVC builds.

Both processes 3 and 4 are renderers.
 
To be clear, when executing this windbg command:

> lmvm interactive_ui_tests

The results vary - the type of symbols loaded changes:

010b0000 0d26c000   interactive_ui_tests C (pdb symbols)          E:\src\out\Debug\interactive_ui_tests.exe.pdb

010b0000 0d26c000   interactive_ui_tests C (private pdb symbols)  E:\src\out\Debug\interactive_ui_tests.exe.pdb

And, correlated with that, private symbols such as internal function names become invisible/available.

It seems weird that something like this could be caused by the *compiler*. Even having it caused by the linker is odd - you'd think that the debugger could load symbols consistently. It seems likely that this is a windbg bug that is triggered by a change in the compiler which the linker failed to manage. Maybe see if https://twitter.com/aluhrs13 has any thoughts on this? You could also try use_lld=true which will be much faster in some cases, and gives us more opportunities to control behavior.

Yeah, it would be nice to have an MSVC build to reduce the number of variables, but since we've turned off MSVC support, this has been an increasingly uphill battle.
I just landed a couple of changes for Microsoft for VC++ compatibility so I think that VC++ builds should be working, if you want to try.
Nice. Thanks! I'll spin up a build and let you know what I find.

I tabled compatibility after fighting a bit with the third_party ffmpeg library and syncing up with dalecurtis@ and finding that maintaining this third party library for MSVC will take a bit of time.
Looks like a few more MSVC errors crept in. I'll get to those in spare cycles.
Status: WontFix (was: Untriaged)
After fixing all the MSVC compile issues, I can verify this issue repros with the MSVC PDBs.
So, sounds like a windbg bug. Consider emailing windbgfb@microsoft.com and/or tweeting at aluhrs13 to point them at this bug.

Sign in to add a comment