Opened 15 years ago

Closed 15 years ago

Last modified 15 years ago

#1449 closed Bugs (fixed)

thread_specific_ptr causing crash in wave tests

Reported by: jrp at dial dot pipex dot com Owned by: Anthony Williams
Milestone: Boost 1.35.0 Component: thread
Version: Boost Development Trunk Severity: Problem
Keywords: Cc:

Description

testwave crashes under VC++ 2008 (9.0) at line 30 of tss.hpp:

>	testwave.exe!boost::thread_specific_ptr<phoenix::closure_frame<phoenix::closure<boost::wave::grammars::closures::closure_value,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t> > *>::cleanup(phoenix::closure_frame<phoenix::closure<boost::wave::grammars::closures::closure_value,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t> > * * data=0x0012fedc)  Line 30 + 0xb bytes	C++

The error is:

Unhandled exception at 0x0068b924 in testwave.exe: 0xC0000005: Access violation writing location 0xde3840a0

The local variables are:

-		data	0x0012fedc	phoenix::closure_frame<phoenix::closure<boost::wave::grammars::closures::closure_value,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t> > * *
-			0x0012ff08 {save=0x1023bab5 frame={...} }	phoenix::closure_frame<phoenix::closure<boost::wave::grammars::closures::closure_value,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t> > *
-		phoenix::tuple<boost::wave::grammars::closures::closure_value,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t>	{a={...} }	phoenix::tuple<boost::wave::grammars::closures::closure_value,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t>
		phoenix::tuple_base<phoenix::tuple<boost::wave::grammars::closures::closure_value,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t> >	{...}	phoenix::tuple_base<phoenix::tuple<boost::wave::grammars::closures::closure_value,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t> >
+		a	{type=1244944 value={...} valid=1245020 }	boost::wave::grammars::closures::closure_value
-		save	0x1023bab5 {save=0x458904c4 frame={...} }	phoenix::closure_frame<phoenix::closure<boost::wave::grammars::closures::closure_value,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t> > *
+		phoenix::tuple<boost::wave::grammars::closures::closure_value,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t>	{a={...} }	phoenix::tuple<boost::wave::grammars::closures::closure_value,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t>
-		save	0x458904c4 {save=??? frame=??? }	phoenix::closure_frame<phoenix::closure<boost::wave::grammars::closures::closure_value,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t> > *
-		phoenix::tuple<boost::wave::grammars::closures::closure_value,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t>	{a={...} }	phoenix::tuple<boost::wave::grammars::closures::closure_value,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t>
		phoenix::tuple_base<phoenix::tuple<boost::wave::grammars::closures::closure_value,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t> >	{...}	phoenix::tuple_base<phoenix::tuple<boost::wave::grammars::closures::closure_value,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t> >
-		a	{type=??? value={...} valid=??? }	boost::wave::grammars::closures::closure_value
		type	CXX0030: Error: expression cannot be evaluated	
-		value	{i=??? ui=??? b=??? }	boost::wave::grammars::closures::closure_value::<unnamed-type-value>
		i	CXX0030: Error: expression cannot be evaluated	
		ui	CXX0030: Error: expression cannot be evaluated	
		b	CXX0030: Error: expression cannot be evaluated	
		valid	CXX0030: Error: expression cannot be evaluated	
		save	CXX0030: Error: expression cannot be evaluated	
-		frame		phoenix::impl::closure_frame_holder<phoenix::closure_frame<phoenix::closure<boost::wave::grammars::closures::closure_value,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t> > > &
		tsp_frame	CXX0030: Error: expression cannot be evaluated	
-		frame	{tsp_frame={...} }	phoenix::impl::closure_frame_holder<phoenix::closure_frame<phoenix::closure<boost::wave::grammars::closures::closure_value,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t> > > &
-		tsp_frame	{func=??? }	boost::thread_specific_ptr<phoenix::closure_frame<phoenix::closure<boost::wave::grammars::closures::closure_value,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t> > *>
		func	CXX0030: Error: expression cannot be evaluated	
-		frame	{tsp_frame={...} }	phoenix::impl::closure_frame_holder<phoenix::closure_frame<phoenix::closure<boost::wave::grammars::closures::closure_value,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t> > > &
-		tsp_frame	{func=??? }	boost::thread_specific_ptr<phoenix::closure_frame<phoenix::closure<boost::wave::grammars::closures::closure_value,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t> > *>
		func	CXX0030: Error: expression cannot be evaluated	
		func	0xeb04c483	void (phoenix::closure_frame<phoenix::closure<boost::wave::grammars::closures::closure_value,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t> > * *)*
-		this	0x004ca64c {func=0xeb04c483 }	const boost::thread_specific_ptr<phoenix::closure_frame<phoenix::closure<boost::wave::grammars::closures::closure_value,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t> > *> * const
		func	0xeb04c483	void (phoenix::closure_frame<phoenix::closure<boost::wave::grammars::closures::closure_value,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t,phoenix::nil_t> > * *)*	

Change History (4)

comment:1 by jrp at dial dot pipex dot com, 15 years ago

This may be a threads issue, rather than a waves issue.

in reply to:  1 comment:2 by Hartmut Kaiser, 15 years ago

Component: wavethread
Owner: changed from Hartmut Kaiser to Anthony Williams

Replying to jrp at dial dot pipex dot com:

This may be a threads issue, rather than a waves issue.

Yes it is a thread issue and has been fixed already by Anthony (at least he asked me to verify a patch).

I'm reassigning this to him.

comment:3 by Anthony Williams, 15 years ago

Resolution: fixed
Status: newclosed

comment:4 by Anthony Williams, 15 years ago

Summary: jrpthread_specific_ptr causing crash in wave tests
Note: See TracTickets for help on using tickets.