[Date Prev][Date Next][Thread Prev][Thread Next][Minivend by date
][Minivend by thread
]
Re: Minivend Crash Continued
Thanks Mike ... sorry I didn't include my system info with this email. My
Perl version is 5.005_03. I'm running MV 3.12 on a Digital Unix 550 MHz,
512 MB RAM.
> > I've continued to work on the crashing problem I'm experiencing with
Digital
> > Unix when the reload button is pressed quickly by a user. The problem
> > appears to stem from MiniVend not waiting for a child process to exit.
When
> > this happens, the child process becomes <defunct>. As a result MiniVend
> > locks. Here is a snippet from 'man'
> >
> > [Digital] When you enter a ps command while running an application
> > that forks child processes, you might see some child processes listed
> > as being in the <defunct> state after they have exited. Processes in
> > this state cannot be killed until the process that forked them is
> > killed.
> >
> > [Digital] The system puts exiting child processes in the <defunct>
> > state if their parent process is still running and has not caught the
> > SIGCHLD signal or executed a wait() system call.
> >
> > [Digital] To avoid having users encounter this problem when they run
> > your application, make sure that your program logic either catches the
> > SIGCHLD signal or executes a wait() system call when spawning a child
> >
> > I think I've narrowed the problem to forking, given the above, and given
> > that MiniVend doesn't crash when running debug in the foreground. I
still
> > haven't been able to determine the exact location of the problem in the
code
> > though.
> >
> > Any thoughts would be appreciated.
> >
>
> If you have Perl 5.... no, I am not going to get into every combination.
> With no version numbers, there is not much to think about. 8-\
>
> If this is MV version 3.12 or higher, there should be no reason
> that I know for this to occur.
>
> If you have built Perl with threads enabled, then try a version without
> threads. Beyond that, MiniVend uses the (normally) completely portable
> double-forking method to dissociate the child from the parent. Indeed,
> I have run MV on Digital UNIX before.
>