Dev32 crashes

Hello,
I have a machine that irregularly experiences Dev32 crashes and I am
pretty sure I know which of my processes is causing the crashes. The
process handles radio data coming in on 1-5 serial ports plus POSIX
mqueue messages, and it sends data out on one of the serial ports and
via UDP broadcasts. The serial port transmissions are controlled by a
timer that goes off about 12 times a second. The timer generates a
signal and the signal handler pushes data out the port using write().
Reading from the serial ports and the mqueue is controlled by the
select() call.
The program can cruise along for months under all sorts of serial port
load conditions, and then start generating Dev32 crashes once or twice
per day. I believe that the crashes occur more often when the program
is receiving on more serial ports, but I think that it can occur even
when just one port is being used. I think that the crashes have
something to do with an interaction between my timer signal handler and
the select() call breaks, but I don’t think I am doing anything unusual
in the signal handler function.
Can anyone suggest what kinds of things might kill Dev32? What should
I be watching for?

Thank You,

Mark Faust

“Mark Faust” <mark_faust@sri.com> wrote in message
news:3C602A04.7B69145B@sri.com

Hello,
I have a machine that irregularly experiences Dev32 crashes and I am
pretty sure I know which of my processes is causing the crashes. The
process handles radio data coming in on 1-5 serial ports plus POSIX
mqueue messages, and it sends data out on one of the serial ports and
via UDP broadcasts. The serial port transmissions are controlled by a
timer that goes off about 12 times a second. The timer generates a
signal and the signal handler pushes data out the port using write().
Reading from the serial ports and the mqueue is controlled by the
select() call.
The program can cruise along for months under all sorts of serial port
load conditions, and then start generating Dev32 crashes once or twice
per day. I believe that the crashes occur more often when the program
is receiving on more serial ports, but I think that it can occur even
when just one port is being used. I think that the crashes have
something to do with an interaction between my timer signal handler and
the select() call breaks, but I don’t think I am doing anything unusual
in the signal handler function.
Can anyone suggest what kinds of things might kill Dev32? What should
I be watching for?

Just a though, start multiple Dev32 and assign only one serial port to each,
first when Dev32 crashed you won’t loose keyboard and console. Maybe
it’s going to help isolate the problem.

Thank You,

Mark Faust

Thanks, I will try that.

Mark

Just a though, start multiple Dev32 and assign only one serial port to each,
first when Dev32 crashed you won’t loose keyboard and console. Maybe
it’s going to help isolate the problem.

Is that something that you have actually done, or just something that

you would expect to work? I was finally able to get back to debugging
this and tried your suggestion. The problem is that the serial ports
don’t seem to like being started up under alternate /devX names. Here’s
part of my sysinit:

Dev &
Dev.ansi -Q -n 6 &
reopen //0/dev/con1
Dev -N dev1 &
Dev.ser -f -b 115200 3f8,4 -N /dev1/ser1 &
Dev -N dev2 &
Dev.ser -f -b 115200 2f8,3 -N /dev2/ser2 &
Dev -N dev3 &
Dev.ser -F -e -b 19200 3e8,15 -N /dev3/ser3 &
Dev -N dev4 &
Dev.ser -F -E -b 9600 2e8,15 -N /dev4/ser4 &
Dev -N dev5 &
Dev.ser -X -F -e -b 9600 320,15 -N /dev5/ser5 &
Dev -N dev6 &
Dev.ser -X -F -e -b 9600 328,15 -N /dev6/ser6 &

If I do the above, I get six /devN directories, and I can open the
serial ports with qtalk, but I can’t get any characters through them. I
am talking to these serial ports using null modem cables from another
machine. I use the third serial port as a login port, but I can’t login
when I do the above. If I use a regular Dev.ser line, i.e.:

Dev.ser -f -b 115200 3f8,4 2f8,3 -b 19200 -e -F 3e8,15 -E -b 9600 2e8,15
-X -e 320,15 328,15 &

then I can communicate with these ports normally and my login port
works.

I also tried to start my consoles under /dev1 and Dev.ansi did not like
that at all. Any other suggestions?

Mark