Revision: | 1.6 |
Committed: | Sun Mar 2 16:10:21 2008 UTC (16 years, 6 months ago) by root |
Branch: | MAIN |
CVS Tags: | rel-4_91, rel-5_151, rel-5_1, rel-5_0, rel-6_0, rel-6_5, rel-4_748, rel-4_8, rel-4_9, rel-4_741, rel-4_743, rel-4_742, rel-6_10, rel-4_744, rel-4_747, rel-6_13, rel-6_09, rel-6_08, rel-6_07, rel-6_06, rel-6_05, rel-6_04, rel-6_03, rel-6_02, rel-6_01, rel-5_161, rel-4_74, rel-4_71, rel-4_72, rel-4_73, rel-5_371, rel-5_372, rel-6_512, rel-6_513, rel-6_511, rel-6_514, rel-5_22, rel-5_23, rel-5_24, rel-5_25, rel-6_32, rel-6_33, rel-6_31, rel-6_36, rel-6_37, rel-5_162, rel-5_2, rel-6_38, rel-6_39, rel-4_802, rel-4_803, rel-4_801, rel-4_804, rel-5_37, rel-5_36, rel-4_479, rel-6_23, rel-6_29, rel-6_28, rel-6_46, rel-4_50, rel-4_51, rel-6_45, rel-4_45, rel-6_51, rel-6_52, rel-6_53, rel-6_54, rel-6_55, rel-6_56, rel-6_57, rel-4_745, rel-4_901, rel-4_49, rel-4_48, rel-4_746, rel-5_11, rel-5_12, rel-5_15, rel-5_14, rel-5_17, rel-5_16, rel-4_47, rel-4_46, rel-4_7, rel-6_43, rel-6_42, rel-6_41, rel-6_47, rel-5_132, rel-5_131, rel-6_44, rel-6_49, rel-6_48, rel-4_911, rel-4_912, HEAD |
Changes since 1.5: | +1 -1 lines |
Log Message: | *** empty log message *** |
# | Content |
---|---|
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 (for example, debian |
3 | only supplies 2.2 and 2.6-optimized libraries, not 2.4). |
4 | |
5 | Glibc contains a bug that causes any program linked against pthreads AND |
6 | using coroutines (of any kind, not only Coro, but including most userspace |
7 | thread libraries like gnu-pth) or alternate stacks to segfault on calls to |
8 | pthread functions. And glibc happens to do a lot of these calls. |
9 | |
10 | (Even if your perl is not compiled against pthreads, e.g. Time::HiRes links |
11 | against -lrt, which drags in pthreads. The same is true for other modules, |
12 | so watch out). |
13 | |
14 | The bug is rather difficult to fix. This is not a problem, however, since |
15 | glibcs compiled for linux-2.4 use a much more efficient method to locate |
16 | their data, which happens to work with coroutines. |
17 | |
18 | So the easy fix is to install a libc which was compiled for linux-2.4 (or |
19 | 2.6) using the "--enable-kernel=2.4 i586-pc-linux-gnu" configure options. |
20 | |
21 | WARNING: This libc will no longer run on linux-2.2 or lower! |
22 | |
23 | UPDATE: Time::HiRes in current perl snapshots does no longer link against |
24 | -lrt. That still means you need to patch it until 5.9.x gets out. |