• BlazeDaley@lemmy.world
    link
    fedilink
    arrow-up
    18
    ·
    7 days ago

    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.

    • fmixolydian@programming.devOP
      link
      fedilink
      English
      arrow-up
      4
      ·
      7 days 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.