Hi,

I have a couple of problems with a test application, and the problems
could be in streams.  I'm using RH 7.3 with LiS 2.14.G.  Everything is
fine in UP mode, however we have seen this problem on SMP and a Timesys
kernel (which I think is preemptible).  We have no problems with the
same applications and drivers on OpenUnix SMP or Solaris SMP (Native
Streams implementations).

The first problem is that I have been seeing intermittent hangs in
lis_sem_alloc+0xac (I'm using the NMI watchdog so I get a panic).  If I
do an objdump, then I discover that address is in the middle of a jump
table of some sort.  I don't recall having this problem on earlier
versions of streams.  I'm using gcc 2.96 build 110 from RH.

My second problem is that when I run several instances of my test
application (which just generates messages) simultaneously, eventually
one or more of them will hang in putmsg.  The only place that I can see
where it would hang is in the call to lis_sleep_on_wwrite.  It looks to
me as if there could be a race condition between lis_wake_up_all_wwrite.

I have dumped the queues to the syslog, but there are no messages on the
driver's queues.  Could it be a problem with backenable called from
getq?  The stream has a highwater mark of 2 messages, so putmsg will be
sleeping on nearly every message from the application.

I'm attempting to understand the code sufficiently well to be able to
say one way or the other but I thought I would send this out in case
somebody with more familiarity could see a problem quicker.

If there is anything that I can do to find either problem quicker let me
know.  I thought about setting LIS_DEBUG_SPL_BIT, to see what order
things are happening there, but I would not have been able to find the
information that I needed with all of the other locks being used by the
streams that are still working.

Thanks,
Jared




_______________________________________________
Linux-streams mailing list
[EMAIL PROTECTED]
http://gsyc.escet.urjc.es/mailman/listinfo/linux-streams

Reply via email to