Hi

Ive found a way to freeze a program when using rThreads and using a
function pointer back to one of the threads from within a shared
library. The higher the level of interrupts on the system, the more
frequently the problem occurs. The problem can be duplicated as follows:

1. Create a child rThread
2. Pass a function pointer to a shared library
3. Get the shared library to call the function pointer

The program will now lockup, and you must kill -9 it. I originally found
this in pcap, inside pcap_loop when it tries to call the callback
function. I have attached a very small project and shared library that
will reproduce the problem.

Just run

./configure
./make

Then generate a lot of interrupts somehow. I do this by running

iperf -us   // on the test machine
iperf -uc xxx.xxx.xxx.xxx -b 500000000 -t 9999 // on some other machine

Then if you run "./callback 1" and try and kill it with Ctrl-C, it
should freeze. It may take a few tries though. It usually happens for me
within 3 or 4 tries if I run iperf really fast. If you run "./callback"
then it wont lockup. The only difference is that when you pass in the 1,
it creates the child thread.

Id like to try this on current but I cant get rThreads compiled for it.

Does anybody have any insight, or could they test it out on current?

Thanks in advance

Jonathan Steel

[demime 1.01d removed an attachment of type application/x-gzip which had a name 
of amcallback-1.0.tar.gz]

Reply via email to