1 | If Coro causes segfaults a lot on calls to libc functions, the cause is |
1 | If Coro causes segfaults a lot on calls to libc functions, the cause is |
2 | probably a glibc compiled for i386 and kernel 2.2. |
2 | probably a glibc compiled for i386 and kernel 2.2. |
3 | |
3 | |
4 | Glibc contains a bug that causes any program linked against pthreads AND |
4 | Glibc contains a bug that causes any program linked against pthreads AND |
5 | using coroutines (of any kind, not only Coro) or alternate stacks to |
5 | using coroutines (of any kind, not only Coro, but including most userspace |
|
|
6 | thread libraries like gnu-pth) or alternate stacks to segfault on calls to |
6 | segfault on calls to pthread functions. And glibc happens to do a lot of |
7 | pthread functions. And glibc happens to do a lot of these calls. |
7 | these calls. |
|
|
8 | |
8 | |
9 | The bug is rather difficult to fix. This is not a problem, however, since |
9 | The bug is rather difficult to fix. This is not a problem, however, since |
10 | glibcs compiled for linux-2.4 use a much more efficient method to locate |
10 | glibcs compiled for linux-2.4 use a much more efficient method to locate |
11 | their data, which happens to work tiwh coroutines. |
11 | their data, which happens to work with coroutines. |
12 | |
12 | |
13 | So the easy fix is to install a libc which was compiled for linux-2.4, |
13 | So the easy fix is to install a libc which was compiled for linux-2.4, |
14 | using the --enable-kernel=2.4 configure option. WARNING: This kernel will |
14 | using the "--enable-kernel=2.4 i586-pc-linux-gnu" configure options. |
|
|
15 | |
15 | no longer run on linux-2.2 or lower! |
16 | WARNING: This libc will no longer run on linux-2.2 or lower! |