It would appear you're overflowing the stack.
You'll need to either turn the long array into a malloced one, or use pthread_attr_setstacksize and friends to create a larger stack when you call pthread_create.
Default thread stack sizes vary a lot before platforms, which would explain why the code works on other platforms.
https://computing.llnl.gov/tutorials/pthreads/#Stack has some example code.
As to why you get a sigbus, it's probably because the act of creating the array is overwriting some part of pthreads internal data structures with garbage, resulting in an alignment error when pthreads tries to clean up the thread.
JosephH
2010-07-25 13:46:11