This is the mail archive of the cygwin mailing list for the Cygwin 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: strange behavior with threads...


On Jul 23 15:50, jean-luc malet wrote:
> Hi!
> I've the following code :
> void _Window::Start(void* arg)
> {
>         ThreadArgs args;
>         args.TheWindow=this;
>         args.args=arg;
>         int err = pthread_create(&main_thread,NULL,_Start, (void*)&args);
>         if (err)
>         {
>                 throw new  Exception(err, "window thread creation error");
>         }
> }
> void* _Window::_Start(void* arg)
> {
>         ThreadArgs* args = (ThreadArgs*) arg;
>         pthread_exit((void*)args->TheWindow->start_routine(args->args));
> }
> 
> _Window::_Start is static
> 
> for some reason that I can't determine it happens that args in
> _Window::_Start have strange value (args->TheWindow don't contain a
> valid pointer, ie a pointer on a _Window object)

Maybe you shouldn't let the arg to the thread point to a local
stack-based variable in the other method which, as you code implies,
returns after having started the thread...


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple


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