PackageHandler::synchTableAccess() is a kludge to serialize DML against a single table, but allow parallel processing against different tables. This kludge is required because the vss can't accept transaction ID's out of numerical order on a single table, and asserts if they're not in order. If there are multiple transactions running on multiple threads, there's no guarantee of order.
Something occasionally breaks if ctrl+c is hit while processing DML. The internal tables and synch conditions of synchTableAccess() can get out of whack. This has caused two catastrophic events. In one case, DMLProc segfaulted while accessing the synchro map (27656), and in other cases, DML statements block indefinitely.