alvinhochun added inline comments.

================
Comment at: lldb/test/Shell/Process/Windows/wndproc_exception.cpp:7
+// RUN: %clangxx_host -o %t.exe -luser32 -v -- %s
+// RUN: %lldb -f %t.exe -o "run"
+
----------------
alvinhochun wrote:
> mstorsjo wrote:
> > mstorsjo wrote:
> > > labath wrote:
> > > > Is there something reasonable we could assert here? The process exit 
> > > > status for instance?
> > > This in itself requires the `%lldb` command to succeed - the exit status 
> > > for each `RUN` line needs to be successful (unless a failure is expected 
> > > and it can be inverted with the `not` command). Or did you mean checking 
> > > the process exit code of the child process (that intentionally does 
> > > crash)?
> > > 
> > > When this test case is run, it prints the following to the terminal:
> > > ```
> > > (lldb) run
> > > Process 3168 stopped
> > > * thread #1, stop reason = Exception 0xc000041d encountered at address 
> > > 0x7ff68e6f1227
> > >     frame #0: 0x00007ff68e6f1227 wndproc_exception.cpp.tmp.exe
> > > ->  0x7ff68e6f1227: movl   $0x1, (%rax)
> > >     0x7ff68e6f122d: movq   $0x0, 0x50(%rsp)
> > >     0x7ff68e6f1236: jmp    0x7ff68e6f1259
> > >     0x7ff68e6f123b: movq   0x48(%rsp), %r9
> > > Process 3168 launched: 
> > > 'C:\dev\llvm-project\llvm\build-msvc\tools\lldb\test\Shell\Process\Windows\Output\wndproc_exception.cpp.tmp.exe'
> > >  (x86_64)
> > > ```
> > > I guess we could check for `Exception 0xc000041d encountered` maybe, 
> > > although I'm afraid of making the testcase unnecessarily brittle too.
> > If running with lldb-server enabled, it prints a different exception code, 
> > `0xc0000005` (which is `STATUS_ACCESS_VIOLATION`) which probably is the 
> > proper nested exception, while without lldb-server, it prints `0xc000041d` 
> > (`STATUS_FATAL_USER_CALLBACK_EXCEPTION`).
> > 
> > So for the purpose of this testcase, just to make sure that it doesn't 
> > crash in this case, it'd be better to not specify exactly which exception 
> > code is to be returned.
> It may be that lldb-server is catching the first chance 
> `STATUS_ACCESS_VIOLATION` exception before the exception is passed to the 
> exception handler...
If you test with windbg or gdb, you will get the access violation / sigsegv 
first, and only after continuing the debuggee you will get the `0xc000041d` 
exception.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D128410/new/

https://reviews.llvm.org/D128410

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to