mgorny added a comment.

In D91012#2381884 <https://reviews.llvm.org/D91012#2381884>, @labath wrote:

> Are you sure that's the right level at which to fix this? Can you explain how 
> that particular test manages to pass a nullptr to this function?

I'm not. However, it's a smaller change that checking it before every one of 
the three `getprogpath()` calls.

`getMainExecutable()` is passed `argv0=nullptr`. Other platforms probably don't 
hit this because their primary code succeeds, while the code for FreeBSD < 13 
apparently doesn't here. Hence, `getprogname()` is called with `nullptr` 
argument.

  (lldb) bt
  * thread #1, name = 'python3.7', stop reason = signal SIGSEGV: invalid 
address (fault address: 0x0)
    * frame #0: 0x00000008086c48ff 
libLLVMSupport.so.12git`llvm::sys::fs::getMainExecutable(char const*, void*) + 
80
      frame #1: 0x00000008086c96e8 
libLLVMSupport.so.12git`printSymbolizedStackTrace(llvm::StringRef, void**, int, 
llvm::raw_ostream&) + 485
      frame #2: 0x00000008086ca91e 
libLLVMSupport.so.12git`llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 96
      frame #3: 0x0000000802b24b34 
_lldb.so`lldb_private::Log::WriteHeader(llvm::raw_ostream&, llvm::StringRef, 
llvm::StringRef) + 718
      frame #4: 0x0000000802b2472b _lldb.so`lldb_private::Log::VAPrintf(char 
const*, __va_list_tag*) + 165
      frame #5: 0x0000000802b245a9 _lldb.so`lldb_private::Log::Printf(char 
const*, ...) + 107
      frame #6: 0x0000000802a41f55 
_lldb.so`lldb_private::CommandInterpreter::HandleCommand(char const*, 
lldb_private::LazyBool, lldb_private::CommandReturnObject&, 
lldb_private::ExecutionContext*, bool, bool) + 127
      frame #7: 0x000000080270575d 
_lldb.so`lldb::SBCommandInterpreter::HandleCommand(char const*, 
lldb::SBExecutionContext&, lldb::SBCommandReturnObject&, bool) + 389
      frame #8: 0x00000008027053e6 
_lldb.so`lldb::SBCommandInterpreter::HandleCommand(char const*, 
lldb::SBCommandReturnObject&, bool) + 216
      frame #9: 0x00000008029172ca 
_lldb.so`_wrap_SBCommandInterpreter_HandleCommand(_object*, _object*) + 2069
      frame #10: 0x000000080036a3d7 libpython3.7m.so.1.0`PyCFunction_Call + 327
      [...]

(the rest of the backtrace is Python)

`llvm::sys::PrintStackTrace()` calls `printSymbolizedStackTrace(Argv0, ...)`, 
and the global static variable `Argv0` is only set by 
`llvm::sys::PrintStackTraceOnErrorSignal()` which is not being called here.


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

https://reviews.llvm.org/D91012

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

Reply via email to