A crash due to an lldb API change #976
hjyamauchi
started this conversation in
General
Replies: 1 comment 2 replies
-
Yeah, this makes sense. It's a small miracle that this load-a-random-liblldb trick has worked so well for as long as it did. I don't think LLDB guarantees any ABI compatibility between major versions. I am planning to release Codellb based on LLDB v17 soon-ish (depending on how long it takes me to adjust for changes between v16 and v17), which should address this. |
Beta Was this translation helpful? Give feedback.
2 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Hi all,
We use codelldb with swift lldb (built near head along with the rest of the swift toolchain) on windows and noticed that lldb/codelldb fails to launch for the last few weeks with:
Error: "Could not load \"c:\\\\Users\\\\hiroshi\\\\.vscode\\\\extensions\\\\vadimcn.vscode-lldb-1.9.2\\\\adapter\\\\codelldb.dll\" (err=0000007F)" Debug adapter exit code=1 (0x1), signal=null.
We tracked this down to what seems to be an lldb API change:
6828:25a8 @ 419748421 - LdrpReportError - ERROR: Locating export "??0SBCommandInterpreter@lldb@@QEAA@PEAVCommandInterpreter@lldb_private@@@Z" for DLL "c:\Users\hiroshi\.vscode\extensions\vadimcn.vscode-lldb-1.9.2\adapter\codelldb.dll" failed with status: 0xc0000139.
where codelldb expects symbol
??0SBCommandInterpreter@lldb@@QEAA@PEAVCommandInterpreter@lldb_private@@@Z
and fails, whereas the (non-working) liblldb.dll instead has??0SBCommandInterpreter@lldb@@IEAA@PEAVCommandInterpreter@lldb_private@@@Z
(the difference isQEAA
vsIEAA
around the middle).We believe this most likely points to the lldb commit
[lldb] Mark most SBAPI methods involving private types as protected or private
(upstream, swift) where theSBCommandInterpreter
constructor is moved from public to protected. If I locally and manually revert the constructor moves, the crash seems to go away (while there may be other incompatibilities.)I believe that this is how the lldb API is built into codelldb and an API change like this will be dealt with next time codelldb is updated and released and until then this use case isn't supposed to work. (Is that right?)
It is our situation that we use near head version of the swift toolchain (where things are still under rapid development for windows.) We unfortunately don't have a good path forward except for pinning the last working build of the swift lldb, which will deviate from the rest of the toolchain, or surgically fixing it as a local stop gap until the next codelldb release comes out.
Any thoughts?
Thank you.
Beta Was this translation helpful? Give feedback.
All reactions