Thread

Commits

  1. Don't Insert() a VFD entry until it's fully built.

  1. Crash in virtual file descriptor FDDEBUG code

    Greg Nancarrow <gregn4422@gmail.com> — 2020-11-17T00:11:22Z

    Hi Hackers,
    
    While investigating a possible file-descriptor issue, I enabled the
    FDDEBUG code in src/backend/storage/file/fd.c, only to find that it
    resulted in a crash as soon as it was invoked.
    It turns out the crash was in some logging code that was being passed
    a NULL fileName.
    I've attached a small patch that corrects the issue.
    
    Regards,
    Greg Nancarrow
    Fujitsu Australia
    
  2. Re: Crash in virtual file descriptor FDDEBUG code

    Tom Lane <tgl@sss.pgh.pa.us> — 2020-11-17T00:47:03Z

    Greg Nancarrow <gregn4422@gmail.com> writes:
    > While investigating a possible file-descriptor issue, I enabled the
    > FDDEBUG code in src/backend/storage/file/fd.c, only to find that it
    > resulted in a crash as soon as it was invoked.
    
    Yeah, I can imagine that code doesn't get tested often.
    
    > I've attached a small patch that corrects the issue.
    
    Thanks, will push.
    
    BTW, while looking at this I started to cast an unfriendly eye on the
    _dump_lru() debug function that's hidden under that symbol.  That seems
    like it's spending a lot of cycles to give you information that will
    very possibly be incomplete (since its 2K buffer would fill up fast).
    And it could very easily turn into an infinite loop if there were
    anything actually wrong with the LRU chain.  So I'm not seeing where
    the cost-benefit ratio is there.
    
    Maybe we should change it to just print the first and last entries
    and the number of entries --- which it could count using a loop that
    knows there shouldn't be more entries than the size of the VFD
    array, so as to prevent infinite-looping if the chain is corrupt.
    
    			regards, tom lane