From: | Andrew Dunstan <andrew(at)dunslane(dot)net> |
---|---|
To: | Andrew Chernow <ac(at)esilo(dot)com> |
Cc: | PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: parallel restore vs. windows |
Date: | 2008-12-09 19:36:31 |
Message-ID: | 493EC8BF.2090103@dunslane.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
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
From | Date | Subject | |
---|---|---|---|
Next Message | Magnus Hagander | 2008-12-09 19:44:15 | Re: SSL BIO wrappers |
Previous Message | Alex Hunsaker | 2008-12-09 19:32:35 | Re: contrib/pg_stat_statements 1202 |