From: Jiří P. <jpa...@we...> - 2008-12-10 22:14:28
|
Hello, I'm sorry to say this, but some changes in the "Fix Warnings and Badness v2" patch[1] from October actually create bugs in the ltp tests. I think they should be reverted by applying the attached patch. The problems are of those types: 1) Calling pthread_create(&th, &newattr, (void *)&new_thread, (void *)&newsockfd) is wrong if eg. newsockfd is a variable subsequently modified by the parent thread. 2) Calling pthread_exit((void *)&exit_val); is wrong if exit_val is a local or thread-local variable, incl. errno. I think they should be reverted, because the warning (conversion pointer/integer) doesn't mean anything bad in this context (provided you use the same type on both sides, eg. the calling thread and the created thread) and other solutions just add unnecessary complexity. The patch goes a little further, while I was searching for related problems, I've found one typo and changed the signatures of some thread functions (they really should be (void* (*)(void*)), not (void* (*)(int))) I've discovered this when I debugged a deadlock in test_1_to_1_threads. BTW, shouldn't the first (or last) thread in this test call t_recv instead of t_send (see the relay function). Regards Jiri Palecek [1] http://article.gmane.org/gmane.linux.ltp/5866 -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/ |