Andrew Chernow wrote:
>>>>
>>>> Parts of AH need deep cloning, notably the formatData member, which
>>>> is done in _ReopenArchive().
>>>>
>>>
>>> Is it okay to clone this from within the thread?
>>
>> I don't see why not.
>>
>
> Because another thread may be modifying the memory you are trying to
> clone. If no one modifies the formatData struct, then why is it being
> deep copied to begin with.
>
>>
>> The program dies with a nasty dialog box when restoring a dump of the
>> regression database after the second COPY thread disconnects.
>
> Sounds like the friendly and helpful GPF Dialog (General Protection
> Fault). This is a core dump which strongly suggests your threads are
> trampling over one another. Its possible that a couple threads get
> fired off but upon the first thread completion, something
> !(deep_copied) is freed/modified ... bang-bang your dead :o I tried
> to find this, but haven't yet.
>
> Maybe do a full deep copy in the main thread and comment out any
> in-thread deep copying. I wonder if that would work with no other
> changes.
I'll try. It's unfortunately not as simple as it sounds, because of the
way the abstractions are arranged. I can't count the number of times I
have had to stop and try to clear my head while working on this code.
Thanks for the suggestion.
cheers
andrew