Thread

  1. signal weirdness

    Peter Galbavy <peter.galbavy@knowledge.com> — 1999-03-29T10:03:49Z

    Hi folks,
    
    I am trying to get a version (any version !) of PostgreSQL running
    on OpenBSD 2.4 upwards, but I am getting some weird behaviour with
    the SIGQUIT in elog():
    
    from kdump:
    
    21633 postgres RET   write 56/0x38
    21633 postgres CALL  sendto(0x4,0x125640,0x3a,0,0,0)
    21633 postgres GIO   fd 4 wrote 58 bytes
          "EERROR:  destroydb: database 'regression' does not exist
           \0"
    21633 postgres RET   sendto 58/0x3a
    21633 postgres CALL  kill(0x5481,0x3)
    21633 postgres RET   kill -1 errno 1 Operation not permitted
    21633 postgres CALL  sigprocmask(0x1,0)
    21633 postgres RET   sigprocmask 0
    21633 postgres CALL  sigsuspend(0)
    
    For those who cannot read hex, FYI 0x5481 == 21633. What this basically
    means that the process is getting permission denied sending a signal
    to itself. Hmm. This is with a snapshot from a few days agao, but
    the results are identical for 6.4.2 as well.
    
    Oh, the result - the regression tests hang waiting for the postgres
    process to receive the SIGQUIT to abort transaction that never
    comes.
    
    The OpenBSD folks don't seem to be bothered. I have RTFM, APUE and 
    kern_sig.c in OpenBSD - no joy. Any ideas anyone ? Seen this before ?
    
    Is it some bizarre interaction of sigprocmask() or whatever ?
    
    Regards,
    -- 
    Peter Galbavy
    Knowledge Matters Ltd
    http://www.knowledge.com /http://www.wonderland.org/ http://www.literature.org/