pkt_init hangs


I am trying to port an application from version 9.01 to version 9.62.
The main reason being that version 9.01 simply does not work any more on either my windows 7 machine or the virtual XP machine I run on the windows 7 machine.

The good news is that it compiles and successfully transfer to the rabbit board on the windows 7 machine.

It also works up to a certain point but the application hangs when executing the “init_sock” library functions. More precisely: it executes that function until “pkt_init” is called and never comes back out of that.

It used to work just fine with a version 9.01build and the hardware is identical as well.

I suppose it is a subtle difference somewhere between versions 9.01 and 9.62 but have not found anything yet.

In the mean time, more detailed info: it goes wrong when Pkt_init (part of IP.LIB) executes the first ioctl function in the section after “// Initialise the ethernet address mapping table”

Does anyone have any suggestions ?

There is another link in the forum where the pkt_init also hangs, could it be a similar issue.
Check link below:


I have checked the other thread and I would be very surprised if this is the same. I can run the older 9.01 based application and the new 9.62 based application alternately on the identical hardware. In the one case it works, in the other it does not. So effectively a hardware problem is most unlikely.

I have not got an answer yet but I have got a solution: I finally got version 9.01 to work after all, even under running windows 7.

All in all it is not difficult but the solution is buried so deep it takes for ever to find. The answer can be found in document TN257, to be found on this web site.

The bottom line is that Dynamic C and by extension the RFU application were originally developed on and for single CPU systems. If you run them on multiple CPU systems they simply don’t work if you don’t force them to run on only one CPU core.

Version 9.62 takes of that on its own but earlier versions don’t and you need to do it manually by setting the CPU affinity.

There are tons of stuff you can find on the internet to automate that so once you know it is a piece of cake to cure it once and for all.

It is a real pity this golden nugget of knowledge is buried so deep. In these days where multiple core processors are the norm it would extend the lifetime and usability of the dynamic C software significantly if it was more public.