我们从RH 6.2迁移了一个C ++ RHEL 5.4应用程序,发现该应用程序已损坏。我们的一项调查得出结论,5.4框中的代码是指'futex'。注意app是使用32位编译器选项编译的 -
grep futex tool_strace.txt futex(0xff8ea454, FUTEX_WAKE_PRIVATE, 1) = 0 futex(0xf6d1f4fc, FUTEX_WAKE_PRIVATE, 2147483647) = 0 futex(0xf6c10a4c, FUTEX_WAKE_PRIVATE, 2147483647) = 0 As per http://www.akkadia.org/drepper/assumekernel.html I added the code on 5.4 build - setenv("LD_ASSUME_KERNEL" , "2.4.1" , 1); // to use Linux Threads
但strace转储仍然显示我被称为'futex'。
所有地址ff8ea454,f6d1f4fc和f6c10a4c都是32位地址。因此,如果我的假设正确,我怎么能编码“futex”调用可以被抑制或根本不被调用。
futex调用有任何已知问题吗?
答案 0 :(得分:1)
我相信以下情况属实: