This is the mail archive of the pthreads-win32@sources.redhat.com mailing list for the pthreas-win32 project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: snap-2004-11-03 breakage


> Code like (from Ettercap)
>   pthread_t pid = ec_thread_getpid("golem");
>   if (pid != 0)
>     ec_thread_destroy(pid);

Code it like

  pthread_t tid;
  if (ec_thread_getpid("golem",&tid)
    ec_thread_destroy(tid);

Don't rely on idiotic pthread_kill() "testing". The standard 
doesn't preclude the use of pointers for thread IDs (e.g. 
inside pthread_t structure). Pointers become indeterminate and
trigger undefined behavior for any nonassignment access once 
the reference storage gets freed. Conforming implementations 
are allowed to reclaim/free that referenced storage when 
detached thread is terminated or joinable thread is terminated 
and joined. Use of "retired" pthread_t values (e.g. as 
pthread_kill() argument) after that moment will trigger 
undefined behavior. 

regards,
alexander.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]