gv wrote:

> Opened #166566 for this.

  As #166566 is merged I tried to load a PDB generated by `llvm-pdbutil`  into 
lldb. I took the file `inline_sites.test.tmp.pdb` produced by  `lld-link` from 
`inline_sites.test` and put it through `llvm-pdbutil
  pdb2yaml --all | llvm-pdbutil yaml2pdb`. The resulting file can be  loaded 
into the debugger all right (which wasn't the case before) but it can't  
resolve any address, because it doesn't have any section contributions (that 
can be confirmed with `llvm-pdbutil dump  --section-contribs`).

  AFAICS there is no support for converting section contributions to  or from 
YAML. Until that is changed, `llvm-pdbutil` can't be used  for creating a PDB 
file that will trigger the crash because the  crash is in the address 
resolution path. I. e.

Thread 1 "lldb" received signal SIGSEGV, Segmentation fault.
0x00007dd8c9160ca1 in llvm::codeview::LazyRandomTypeCollection::getType 
(this=0x63574517b850, Index=...) at 
/home/vg/25-llvm/llvm/lib/DebugInfo/CodeView/LazyRandomTypeCollection.cpp:93
93        return Records[Index.toArrayIndex()].Type;
(gdb) bt
#0  0x00007dd8c9160ca1 in llvm::codeview::LazyRandomTypeCollection::getType 
(this=0x63574517b850, Index=...)
    at 
/home/vg/25-llvm/llvm/lib/DebugInfo/CodeView/LazyRandomTypeCollection.cpp:93
#1  0x00007dd8c7821ac3 in 
lldb_private::npdb::SymbolFileNativePDB::ParseInlineSite (this=0x6357450af750, 
    id=..., func_addr=...)
    at 
/home/vg/25-llvm/lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp:1624
#2  0x00007dd8c7821ebd in operator() (id=..., kind=<optimized out>, 
__closure=0x7ffe98c2fac0)
    at 
/home/vg/25-llvm/lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp:1350
#3  llvm::function_ref<bool(llvm::codeview::SymbolKind, 
lldb_private::npdb::PdbCompilandSymId)>::callback_fn<lldb_private::npdb::SymbolFileNativePDB::ParseLineTable(lldb_private::CompileUnit&)::<lambda(llvm::codeview::SymbolKind,
 lldb_private::npdb::PdbCompilandSymId)> >(intptr_t, 
llvm::codeview::SymbolKind, lldb_private::npdb::PdbCompilandSymId) 
(callable=callable@entry=140731461335744, params#0=<optimized out>, 
params#1=..., 
    params#1@entry=...) at 
/home/vg/25-llvm/release/include/llvm/ADT/STLFunctionalExtras.h:46
#4  0x00007dd8c7818259 in llvm::function_ref<bool (llvm::codeview::SymbolKind, 
lldb_private::npdb::PdbCompilandSymId)>::operator()(llvm::codeview::SymbolKind, 
lldb_private::npdb::PdbCompilandSymId) const (params#1=..., 
    params#0=<optimized out>, this=<synthetic pointer>)
    at /home/vg/25-llvm/release/include/llvm/ADT/STLFunctionalExtras.h:68
#5  
lldb_private::npdb::SymbolFileNativePDB::ParseSymbolArrayInScope(lldb_private::npdb::PdbCompilandSymId,
 llvm::function_ref<bool (llvm::codeview::SymbolKind, 
lldb_private::npdb::PdbCompilandSymId)>) (
    this=<optimized out>, parent_id=..., fn=...)
    at 
/home/vg/25-llvm/lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp:1687
#6  0x00007dd8c7820580 in 
lldb_private::npdb::SymbolFileNativePDB::ParseLineTable (this=0x6357450af750, 
    comp_unit=...) at 
/home/vg/25-llvm/release/include/llvm/ADT/STLFunctionalExtras.h:55
#7  0x00007dd8c700c494 in lldb_private::CompileUnit::GetLineTable 
(this=0x635744e8daf0)
    at /home/vg/25-llvm/lldb/source/Symbol/CompileUnit.cpp:171
#8  0x00007dd8c781a05a in lldb_private::npdb::SymbolFileNativePDB::CreateBlock 
(this=0x6357450af750, 
    block_id=...)
    at 
/home/vg/25-llvm/lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp:444
#9  0x00007dd8c781a2c3 in 
lldb_private::npdb::SymbolFileNativePDB::GetOrCreateBlock (this=0x6357450af750, 
    block_id=...)
    at 
/home/vg/25-llvm/lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp:1024
#10 0x00007dd8c781a323 in operator() (id=..., 
kind=llvm::codeview::S_INLINESITE, __closure=0x7ffe98c30228)
    at 
/home/vg/25-llvm/lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp:1661
#11 llvm::function_ref<bool(llvm::codeview::SymbolKind, 
lldb_private::npdb::PdbCompilandSymId)>::callback_fn<lldb_private::npdb::SymbolFileNativePDB::ParseBlocksRecursive(lldb_private::Function&)::<lambda(llvm::codeview::SymbolKind,
 lldb_private::npdb::PdbCompilandSymId)> >(intptr_t, 
llvm::codeview::SymbolKind, lldb_private::npdb::PdbCompilandSymId) 
(callable=callable@entry=140731461337640, params#0=<optimized out>, 
params#1=..., 
    params#1@entry=...) at 
/home/vg/25-llvm/release/include/llvm/ADT/STLFunctionalExtras.h:46
#12 0x00007dd8c7818259 in llvm::function_ref<bool (llvm::codeview::SymbolKind, 
lldb_private::npdb::PdbCompilan--Type <RET> for more, q to quit, c to continue 
without paging--
dSymId)>::operator()(llvm::codeview::SymbolKind, 
lldb_private::npdb::PdbCompilandSymId) const (params#1=..., 
    params#0=<optimized out>, this=<synthetic pointer>)
    at /home/vg/25-llvm/release/include/llvm/ADT/STLFunctionalExtras.h:68
#13 
lldb_private::npdb::SymbolFileNativePDB::ParseSymbolArrayInScope(lldb_private::npdb::PdbCompilandSymId,
 llvm::function_ref<bool (llvm::codeview::SymbolKind, 
lldb_private::npdb::PdbCompilandSymId)>) (
    this=<optimized out>, parent_id=..., fn=...)
    at 
/home/vg/25-llvm/lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp:1687
#14 0x00007dd8c7818349 in 
lldb_private::npdb::SymbolFileNativePDB::ParseBlocksRecursive (
    this=0x6357450af750, func=...)
    at 
/home/vg/25-llvm/lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp:1668
#15 0x00007dd8c7015c71 in lldb_private::Function::GetBlock 
(this=0x635744f3f440, 
    can_create=can_create@entry=true) at 
/home/vg/25-llvm/lldb/source/Symbol/Function.cpp:386
#16 0x00007dd8c781a534 in 
lldb_private::npdb::SymbolFileNativePDB::ResolveSymbolContext (
    this=0x6357450af750, addr=..., resolve_scope=72, sc=...)
    at 
/home/vg/25-llvm/lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp:1174
#17 0x00007dd8c6f62f66 in lldb_private::Module::ResolveSymbolContextForAddress 
(this=0x635745141860, 
    so_addr=..., resolve_scope=resolve_scope@entry=72, sc=..., 
    resolve_tail_call_address=resolve_tail_call_address@entry=false)
    at /home/vg/25-llvm/lldb/source/Core/Module.cpp:487
#18 0x00007dd8c6f39470 in lldb_private::Address::CalculateSymbolContext 
(this=0x6357461011a0, 
    sc=0x635745fcb840, resolve_scope=72) at 
/home/vg/25-llvm/lldb/source/Core/Address.cpp:832
#19 0x00007dd8c6f394c7 in lldb_private::Address::ResolveFunctionScope 
(this=this@entry=0x6357461011a0, 
    sym_ctx=...) at /home/vg/25-llvm/lldb/source/Core/Address.cpp:270
#20 0x00007dd8c70dd805 in 
lldb_private::RegisterContextUnwind::InitializeZerothFrame (this=0x635746101110)
    at /home/vg/25-llvm/lldb/source/Target/RegisterContextUnwind.cpp:163
#21 0x00007dd8c70ddfc9 in 
lldb_private::RegisterContextUnwind::RegisterContextUnwind (
    this=this@entry=0x635746101110, thread=..., 
    next_frame=std::shared_ptr<lldb_private::RegisterContextUnwind> (empty) = 
{...}, sym_ctx=..., 
    frame_number=frame_number@entry=0, unwind_lldb=...)
    at /home/vg/25-llvm/lldb/source/Target/RegisterContextUnwind.cpp:73
#22 0x00007dd8c70cd220 in lldb_private::UnwindLLDB::AddFirstFrame 
(this=0x7dd7a0050470)
    at /home/vg/25-llvm/lldb/source/Target/UnwindLLDB.cpp:81
#23 lldb_private::UnwindLLDB::AddFirstFrame (this=0x7dd7a0050470)
    at /home/vg/25-llvm/lldb/source/Target/UnwindLLDB.cpp:71
#24 0x00007dd8c70cd519 in lldb_private::UnwindLLDB::DoGetFrameInfoAtIndex 
(this=0x7dd7a0050470, idx=0, 
    cfa=@0x7ffe98c309f0: 18446744073709551615, pc=@0x7ffe98c309e8: 
18446744073709551615, 
    behaves_like_zeroth_frame=@0x7ffe98c309e7: true)
    at /home/vg/25-llvm/lldb/source/Target/UnwindLLDB.cpp:400


https://github.com/llvm/llvm-project/pull/166455
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to