Boost logo

Boost :

From: ajp_m (a.maclean_at_[hidden])
Date: 2002-02-18 00:11:38


A colleague of mine found the problem (many thanks Mike!).

I did not compile the thread library as a DLL (silly me!).
Consequently, PROCESS_ATTACH in threadmon.cpp was not allocating the
key!

i/e. in this section of code:
BOOL APIENTRY DllMain(HANDLE module, DWORD reason, LPVOID)
{
    switch (reason)
    {
        case DLL_PROCESS_ATTACH:
            InitializeCriticalSection(&cs);
            key = TlsAlloc();
            break;
...

Of course this begs the question:
Is it possible to modify the code so that if it is not compiled as a
DLL the code will still function correctly?

  Andrew

 
--- In boost_at_y..., "ajp_m" <a.maclean_at_a...> wrote:
> Specifically, I am running MSV6 SP5 under Windows XP.
> I have narrowed the error down to threadmon.cpp line 135:
> handlers->push_front(func);
>
> push_front seems to be failing because when we step into it, _P
has
> a value of 0xffffffff in the VC98 List header file.
> I am guessing, but it seems that ThreadLocalStorage may not be
> returning a proper value or it is corrupted somehow. So the header
> _HEAD ends up with a value of 0xffffffff in LIST line 166. i.e in:
> iterator begin()
> {return (iterator(_Acc::_Next(_Head))); }
>
>
> Hope this helps.
> Regards
>
> Andrew
>
>
>
> --- In boost_at_y..., "Mountfort, Geoff" <gmountfort_at_a...> wrote:
> > Andrew,
> >
> > test_thread passes for me on Windows2000 SP2, VC6SP3,
boost_1_27_0.
> >
> > There are only five places where on_thread_exit() returns non-
zero.
> > What happens if you insert DebugBreak() (or std::cout << "...")
> statements?
> >
> >
> > Geoff
> >
> > -----Original Message-----
> > From: ajp_m [mailto:a.maclean_at_a...]
> > Sent: Thursday, 14 February 2002 10:46 AM
> > To: boost_at_y...
> > Subject: [boost] Thread - problem (tss.cpp under MSVC++6)
> >
> >
> > With respect to the latest version of Boost 1.27.0 I have a
> problem
> > with the thread library under MSVC 6. Everything compiles
cleanly
> so
> > I then ran test_thread.cpp. The test fails on leaving test_tss
().
> In
> > particular it is an assertion failure at line 69 in tss.cpp,
> > this is in the function cleanup_handlers* get_handlers(). All
the
> > other tests in this program run OK.
> >
> > Has anyone else had this problem? If so how can we fix it?
> >
> >
> > Thanks
> >
> > Andrew
> >
> >
> >
> > Info: http://www.boost.org Send unsubscribe requests to:
> > <mailto:boost-unsubscribe_at_y...>
> >
> > Your use of Yahoo! Groups is subject to
> http://docs.yahoo.com/info/terms/


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk