SourceForge has been redesigned. Learn more.
Close

#36 sigwait fails when migrating keepalive

closed
5
2004-04-05
2004-03-31
No

Platform: i386, 1.0.0-rc3

To reproduce:
1. Install the openssi-tools SRPM
2. Run rpmbuild -bp /usr/src/redhat/SPECS/openssi-tools.spec
3. cd /usr/src/redhat/BUILD/openssi-tools-1.0.0/openssi-tools/keepalive
4. Edit keepalive.h and modify the #define KEEPCFG (line 297) to
"/cluster/dev/keepalivecfg"
5. Run make clean all install in that directory
6. mkdir /cluster/dev
7. Run /sbin/keepalive on the init node:
# /sbin/keepalive
8. Use pidof or ps ax to find the pid of keepalive. There would
be two pids - keepalive invokes fork(). The child polls
/cluster/dev/keepalivecfg, while the parents monitors the
registered processes.
9. Use migrate command to migrate the parent pid to
a secondary node.
# migrate 2 <pid_of_parent>
10. keepalive syslog's "sigwait failed" at line 1690 in keepalive.c

Discussion

  • Chirag Kantharia

    Logged In: YES
    user_id=57087

    Please use keepalive.c and findproc.c from the CVS. The one shipped with rc3, does not have the sigaction code. Copy keepalive.c and findproc.c to openssi-tools-1.0.0/openssi-tools/keepalive.

     
  • Aneesh Kumar K.V

    Logged In: YES
    user_id=230991

    OpenSSI need special handling for suspend and sigwait. you
    need to do the below for sys_rt_sigtimedwait

    current->flags |= PF_SIGSUSPEND;

    The rest will be taken care by the migration code.

    I haven't tested this . But i guess it should fix it.

    -aneesh

     
  • Laura Ramirez

    Laura Ramirez - 2004-04-05
    • status: open --> closed
     
  • Laura Ramirez

    Laura Ramirez - 2004-04-05

    Logged In: YES
    user_id=300036

    Fix checked in by John Byrne:
    revision 1.3.2.10
    date: 2004/04/01 03:20:27; author: jlbyrne; state: Exp;
    lines: +13 -0
    M ci/kernel/kernel/signal.c
    Make sigwait() work transparently over migrates;
    sigtimewait()
    will have a bug, still; it will restart after a
    migrate with
    the original timeout. I added a printk() to warn in
    this case.

     

Log in to post a comment.