Miloslav Trmac wrote:
I have just seen a crash at a similar place on x86_64. The apparent cause is sthreads.c:116: makecontext(&ctx->ctx, (void(*)(void))cli, 1, arg); arg is a void *, but:
- the size is given as 1; it should be (sizeof (arg) + sizeof (int) - 1) / sizeof (int) because the "size" is defined as a number of int arguments
- it won't work anyway; makecontext () is defined to work only for integer parameters. It is not possible to pass a pointer as integers on x86_64, which uses registers to pass the first 6 integer or pointer parameters.
Are we still talking about IRIX? http://nixdoc.net/man-pages/IRIX/man3c/makecontext.3c.html I can't find any of mentioned limitations in the manual. Just the opposite: "the arguments that follow the argc parameter for makecontext are restricted to longs and pointers only".
Best regards, Mike