Tuesday, 27 December 2011

Dtrace / Ubuntu 11.10/i686

Spent some time over Xmas adding a new provider (the 'proc' provider)
which is a simple layering on the existing providers, and provides
easy access to process creation/termination. Its unfinished.

I was asked about some compile errors on Ubuntu 11.10/i686 and
was confident there was no issue here.

What I hit upon really made my stomach churn. Firstly, a simple
error stopped compilation because of something not quit right in
GCC. That was easily fixed.

But no /usr/include/sys directory was a stunning shock. That means
most apps are not going to compile. Period. Scanning google showed
that the error was common, but yet I couldnt find a solution,
that didnt involve a "hack". The hack is to manually symlink
/usr/include/i386-linux-gnu/sys to /usr/include/sys.

Strange, because the 64bit release works perfectly.

But then, the next horror story is that dtrace will quite
happily crash the kernel. There seems to be possibly two
avenues of investigation. Firstly, the kernel is complaining about
stack overflow, which means they built the kernel with tiny (4k? 8k?)
stacks, and could be a problem for dtrace. If this is the case, we will
need to switch to our own stacks; not had to do that before.

The other issue, which might be related, is that the interrupt
handler does not work. Again, this could be related .. if we
blow a stack then we will corrupt whatever is abutting our stack
pages, and all bets are off. (I am getting quite reliable VirtualBox /
Guru Meditation dialogs, which is a sure sign of a double or triple fault,
again, hinting at bad karma with the stacks).

So, off to go fix the i386 build. (The Ubuntu 8.04 release
works really nicely, as a BTW).

Post created by CRiSP v10.0.21a-b6142

1 comment:

  1. Hi, you do not need to create symlinks. Just do a sudo apt-get install gcc-multilib to get all the 32bit include files.