you are viewing a single comment's thread
view the rest of the comments
[–] 16 points 1 year ago (1 child)

I’m going to whoosh the joke for a moment.

Avoid allocating memory in sig segv handlers. I worked at a company once that had written their own handlers that tried to print a stack trace. I was fortunate enough to find a machine in a test environment that segfaulted while allocating memory. The handler then caused a deadlock in a call to malloc (through new). I ended up rewriting the handler to fix two sources of memory allocation. First I preallocate enough space to do string manipulations in the handler. Second I made eager calls to a few libc functions used in the handler to avoid memory allocation from lazy binding from ld.so.

  • source
  • hideshow 1 child comment
  • [–] [S] 4 points 1 year ago

    actually, in the production version i check if the sigsegv handler already got triggered at the start of the handler (to avoid a nested sigsegv) and just exit without any fancy error printing if that happened

    i left it out of this meme bc it would've cluttered up the code snippet.

  • source
  • parent