Thanks. As I said before, I'd rather not touch the threading code yet.
Hopefully Ben will be able to have a look at it soon enough.

On that note, if anyone reading this message has good knowledge of Boost
threads, and willing to contribute, please contact me privately or through
the list. Isidor and Gorgio don't seem to be working on this anymore, and we
would like to have this task done with.

Itamar.

-----Original Message-----
From: cel tix44 [mailto:celti...@gmail.com] 
Sent: Friday, November 13, 2009 7:18 AM
To: clucene-developers@lists.sourceforge.net
Subject: Re: [CLucene-dev] Branch 2.3.2 -- crash in ThreadLocal.cpp

Itamar

If you still have my test-case for StandardAnalyzer, here's an easy way to
reproduce this crash:

in my_test_main.cpp --->

1) after #includes, add this:
        bool __stdcall DllMain( unsigned short hinstDLL,     // DLL
module handle
                                _cl_dword_t fdwReason,  // reason called
                                void*);                  // reserved    

2) after s->close(), add these:
        DllMain(0,3,NULL); // <--- trace from here & see how the crash
occurs
        DllMain(0,3,NULL);

No sure if that's intentional -- but _CLDELETE(threadData) appears only in
_ThreadLocal::_shutdown() and is absent from the destructor.

Regards
Celto


On Fri, Nov 13, 2009 at 9:11 AM, cel tix44 <celti...@gmail.com> wrote:
> Itamar
>
> I'm afraid it's a stopgap only. No tests done to see how it affects 
> multi-threaded use or if it breaks anything else.
>
> Also, having DllMain in ThreadLocal.cpp is a problem for those who 
> implement their own DllMain -- so you're right, let's leave it for Ben 
> to review and / or wait for Isidor to finish his work.
>
> Regards
> Celto
>
>
> On Fri, Nov 13, 2009 at 4:09 AM, Itamar Syn-Hershko 
> <ita...@divrei-tora.com> wrote:
>> Celto,
>>
>> Is this a stopgap or an actual fix? I'm less familiar with the code 
>> there, it's more of Ben's work (and we are about to move to Boost 
>> Threads -- still waiting for the person to take this up to 
>> completion) so I'd rather not touch it for now unless there is a 
>> proven test case to make it crash and then this fix indeed resolves the
issue without breaking anything else.
>>
>> BTW, as _internal is always created using new (as opposed to _CLNEW) 
>> internally, you would rather use delete _internal; than the _CLDELETE
macro.
>> You can also nullify it yourself, but there's no point in nullifying 
>> member variables in the destructor unless they are shared.
>>
>> Itamar.
>>
>> -----Original Message-----
>> From: cel tix44 [mailto:celti...@gmail.com]
>> Sent: Wednesday, November 11, 2009 1:04 AM
>> To: clucene-developers@lists.sourceforge.net
>> Subject: [CLucene-dev] Branch 2.3.2 -- crash in ThreadLocal.cpp
>>
>> Team
>>
>> I hit a crash while testing a DLL compiled from the GIT branch marked 
>> "ASCII
>> + misc fixes". I used CMake 2.6.4 to generate code for VS 2008 with
>> ENABLE_ASCII_MODE | DISABLE_MULTITHREADING.
>>
>> It appears that (under certain circumstances) DLLMain implemented in 
>> ThreadLocal.cpp gets invoked with fdwReason=3 (DLL_THREAD_DETACH) 
>> more than once. As my test is compiled with DISABLE_MULTITHREADING,
>> UnregisterCurrentThread() attempts to unregister the same (current) 
>> thread more than once, which causes Access Violation with NULL 
>> pointers or pointers to 0xFEEEFEEE (freed memory).
>>
>> As a stopgap, I used the fix below.
>>
>> Regards
>> Celto
>>
>> -------------------------
>> 1) in _ThreadLocal::~_ThreadLocal():
>> replace this line:
>>           delete _internal;
>> with:
>>        _CLDELETE(_internal);
>>        _CLDELETE(threadData);
>>
>> 2) in _ThreadLocal::setNull()
>> add this check:
>>                if (_internal == NULL ){
>>                        return;
>>                }
>>
>> ---------------------------------------------------------------------
>> -------
>> --
>> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 
>> 30-Day trial. Simplify your report design, integration and deployment 
>> - and focus on what you do best, core application coding. Discover 
>> what's new with Crystal Reports now.  http://p.sf.net/sfu/bobj-july 
>> _______________________________________________
>> CLucene-developers mailing list
>> CLucene-developers@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/clucene-developers
>>
>>
>>
>> ---------------------------------------------------------------------
>> --------- Let Crystal Reports handle the reporting - Free Crystal 
>> Reports 2008 30-Day trial. Simplify your report design, integration 
>> and deployment - and focus on what you do best, core application 
>> coding. Discover what's new with Crystal Reports now.  
>> http://p.sf.net/sfu/bobj-july 
>> _______________________________________________
>> CLucene-developers mailing list
>> CLucene-developers@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/clucene-developers
>>
>

----------------------------------------------------------------------------
--
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus
on what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
CLucene-developers mailing list
CLucene-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/clucene-developers



------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
CLucene-developers mailing list
CLucene-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/clucene-developers

Reply via email to