Andrew Dunstan wrote:


Andrew Chernow wrote:

HANDLE h = (HANDLE)_beginthreadex(NULL, 0, thread_start, arg, 0, NULL);

This didn't give me any more joy, unfortunately. But you're right, I should be using it.


Are these threads sharing memory, intentionally or by mistake?


Things they write, and things they read but might not be stable, are not supposed to be shared. If they are it's a mistake.


Looks like the ArchiveHandle variable 'AH' and the TocEntry 'next_work_item' are not being deep copied at line 315 of your patch, where you prepare the RestoreArgs struct for the thread. Every thread is accessing and possibly updating the members of these structs that need to be deep copied.

--
Andrew Chernow
eSilo, LLC
every bit counts
http://www.esilo.com/

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to