Out of interrupts events!

Hello everybody.

I have an embedded OS image (QNX 6.3, x86) running in an Athena CPU board. After booting up and waiting some minutes without any application running, the system get hang and begins to continuously display on the screen the message “Out of interrupts events!”.

After booting up, and before the system hanging up, the pidin utility gave the following result:

pid tid name prio STATE Blocked
1 1 procnto 0f READY
1 2 procnto 255r RECEIVE 1
1 3 procnto 255r RECEIVE 1
1 4 procnto 10r RECEIVE 1
1 5 procnto 10r RUNNING
1 6 procnto 10r RECEIVE 1
1 7 procnto 10r RECEIVE 1
1 8 procnto 10r RECEIVE 1
1 9 procnto 10r RECEIVE 1
1 10 procnto 10r RECEIVE 1
4098 1 proc/boot/pci-bios 10r RECEIVE 1
4099 1 proc/boot/devc-con 10r RECEIVE 1
4101 1 roc/boot/devb-eide 10r SIGWAITINFO
4101 2 roc/boot/devb-eide 21r RECEIVE 1
4101 3 roc/boot/devb-eide 10r RECEIVE 7
4101 4 roc/boot/devb-eide 10r RECEIVE 4
4101 7 roc/boot/devb-eide 10r RECEIVE 4
4101 8 roc/boot/devb-eide 10r RECEIVE 4
4101 9 roc/boot/devb-eide 10r RECEIVE 4
24580 1 proc/boot/slogger 10r RECEIVE 1
24582 1 proc/boot/pipe 10r SIGWAITINFO
24582 2 proc/boot/pipe 10r RECEIVE 1
24582 3 proc/boot/pipe 10r RECEIVE 1
24582 4 proc/boot/pipe 10r RECEIVE 1
24583 1 proc/boot/mqueue 10r RECEIVE 1
24584 1 sbin/devc-pty 10r RECEIVE 1
24586 1 bin/tinit 10r REPLY 1
57356 1 sbin/devb-ram 10r SIGWAITINFO
57356 2 sbin/devb-ram 21r RECEIVE 1
57356 3 sbin/devb-ram 10r RECEIVE 7
57356 4 sbin/devb-ram 10r RECEIVE 4
57356 5 sbin/devb-ram 10r RECEIVE 4
57356 6 sbin/devb-ram 10r RECEIVE 4
90125 1 sbin/devc-ser8250 10r RECEIVE 1
90127 1 bin/io-net 10r SIGWAITINFO
90127 2 bin/io-net 21r RECEIVE 5
90127 3 bin/io-net 10r RECEIVE 1
90127 4 bin/io-net 10r RECEIVE 1
90127 5 bin/io-net 10r RECEIVE 1
90127 6 bin/io-net 20r RECEIVE 9
90127 7 bin/io-net 10r RECEIVE 25
90127 8 bin/io-net 10r CONDVAR b827be34
90127 9 bin/io-net 9r RECEIVE 1
151569 1 bin/inetd 10r SIGWAITINFO
184329 1 bin/sh 10r SIGSUSPEND
241675 1 bin/pidin 10r REPLY 1

My bootscript is the following:

#Variables initialization

SHELL=/bin/sh
TERM=qansi
PROCESSOR=x86
LD_LIBRARY_PATH=/lib:/lib/dll:/usr/lib:/sbin
SYSNAME=nto

procmgr_symlink …/…/proc/boot/libc.so.2 /usr/lib/ldqnx.so.2

display_msg “Starting…”

seedres

display_msg “Starting pci-bios server…”
pci-bios &
waitfor /dev/pci

display_msg “Starting up console driver…”
devc-con -n4 &
waitfor /dev/con1
waitfor /dev/con2
reopen /dev/con1
sleep 1

display_msg “Starting EIDE driver”
devb-eide cam quiet blk auto=partition eide master
waitfor /dev/hd0t77
mount -t qnx4 /dev/hd0t77 /

slogger &
waitfor /dev/slog

display_msg “Starting pipe manager…”
pipe &
waitfor /dev/pipe

Some common servers

mqueue &
devc-pty &

display_msg “Starting sysinit…”
sh -c /etc/rc.d/rc.sysinit

display_msg “End of boot process”

Does anybody know what is the meaning of this message?
Whats happening?

Thanks in advance.

ogr

Do you get the message “Starting sysinit…” and if so, What is in your rc.sysinit?

Yes, the sysinit file is executed fine. Its content is:


#ifdef __USAGE

#%C

#This script sets up your environment & starts system services

#endif

echo Entering sysinit

Add the system utilities to the path…

export PATH=/sbin:/usr/sbin:/bin:/usr/bin

A usefull function

function waitfor {
typeset -i i=0
while test $i -lt 60 -a ! $1 -ef $1 ; do
sleep 1;
let i=i+1;
done
unset i
}

Start random, this is needed for things like OpenSSH

random -t

Find the hostname

if test -z $HOSTNAME; then
HOSTNAME=$(hostname -s)
if test $HOSTNAME == localhost; then
unset HOSTNAME
fi
fi

See if there is a host specifiy etc directory

if ! test -z “$HOSTNAME”; then
if test -x /etc/host_cfg/$HOSTNAME; then
etc_host=/etc/host_cfg/$HOSTNAME;
fi
fi

if test -d /var/dumps; then
dumper -d /var/dumps
fi

if test ! -z “$etc_host” -a -x $etc_host/rc.d/rc.local; then
echo “Starting extra run commands for $(hostname)”
. $etc_host/rc.d/rc.local
elif test -x /etc/rc.d/rc.local; then
echo “Starting extra run commands”
/etc/rc.d/rc.local
fi

Change the path to back before starting init

#P=-p
if test ! -z “$SAFEMODE”; then
unset P
fi

if test -f /etc/system/config/nophoton; then
unset P
fi

echo “Login in”
PATH=/bin:/usr/bin exec which tinit $P LOGNAME=root

print Unable to init, starting a shell

echo “Starting a shell”

exec sh
exec fesh

print Really can’t do anything…

echo “End of sysinit”


I use also a rc.local script:


echo Entering rc.local …

Mounitng a Ram-Disk

echo Mounting Ram-Disk
devb-ram disk name=RAM ram capacity=8192
waitfor /dev/RAM0t77
mount -t qnx4 /dev/RAM0t77 /home/ramdisk

Athena serial ports

echo Configuring serial ports
devc-ser8250 -u1 3f8,4 -u2 2f8,3 -u3 3e8,9 -u4 2e8,15 &

Network

echo Configuring network devices
io-net -d ns83815 did=0x20,vid=0x100b -p tcpip
waitfor /dev/io-net/en0
mount -Tio-net npm-qnet-compat.so

echo Configuring network communications
netmanager -f /etc/net.cfg
sleep 1
inetd &
echo
sleep 3

echo Exiting rc.local


Is very strange since this problen arise suddenly whith no application running and many minutes after the booting process was finished. The system works in console mode without Photon.

Any idea?

ogr

This message means a ISR is generating events and the program associated with it isn’t fast enough to process all the events. The interrupt event queue is getting full.

Ogr,

Your best bet is to stop programs one at a time until you figure out which one is the culprit in terms of getting too many interrupts.

For example, start by commenting out the Network stuff (io-net, netmanager etc) and see if the problem still arises. Then comment out the serial driver and so on.

Tim

Tim,

I think trying what you suggest it’s a good way. Let me test and see what I obtain.

Thanks everybody.