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
