On 6/9/05, Ludovic Drolez <[EMAIL PROTECTED]> wrote:

So it seems to say that pthread_create tried to use a freed block and that this
block has been freed at tftpd.c:736 ?

Yes. The bug is as follows:

   new = calloc(1, sizeof(thread_data)); ...
   pthread_create(&new->tid, ..., new);

At this point it is indeterminate which thread goes first -- the
"current" one or the "new" one. If the "new" thread runs to
*completion* (including the free(data) on line 736) *before* the
"current" thread had a chance to write new->tid, then you'll have
the bug which VG cought for you: writing to now dangling memory.

Cheers,

Paul Pluzhnikov


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to