If Coro causes segfaults a lot on calls to libc functions, the cause is probably a glibc compiled for i386 and kernel 2.2. Glibc contains a bug that causes any program linked against pthreads AND using coroutines (of any kind, not only Coro, but including most userspace thread libraries like gnu-pth) or alternate stacks to segfault on calls to pthread functions. And glibc happens to do a lot of these calls. (Even if you pelr is not compiled against pthreads, Time::HiRes links against -lrt, which drags in pthreads. The same is true for other modules, so watch out). The bug is rather difficult to fix. This is not a problem, however, since glibcs compiled for linux-2.4 use a much more efficient method to locate their data, which happens to work with coroutines. So the easy fix is to install a libc which was compiled for linux-2.4, using the "--enable-kernel=2.4 i586-pc-linux-gnu" configure options. WARNING: This libc will no longer run on linux-2.2 or lower! UPDATE: I am no longer able to compile glibc-2.3.2 in this way. The reason is most probably that the glibc folks work on an enhanced thread local storage facility, and it might be that you need a 2.5 or 2.6 kernel to make it work. Glibc-2.3.1 works fine, though.