This was a long-standing bug revealed by bug 133558. The issue is that the global static HashTables cache their set of keys as StringImpls that are associated with a particular VM. This is obviously incompatible with using multiple VMs on multiple threads (e.g. when using workers). The fix is to change the "keys" field of the static HashTables to be char** instead of StringImpl**.
Created attachment 232743 [details] Patch
Comment on attachment 232743 [details] Patch r=me
Created attachment 232760 [details] Patch for landing
Comment on attachment 232760 [details] Patch for landing Clearing flags on attachment: 232760 Committed r169740: <http://trac.webkit.org/changeset/169740>
All reviewed patches have been landed. Closing bug.
> This is obviously incompatible with using multiple VMs on multiple threads (e.g. when using workers) Wasn't this the case that "NoStaticTables" attribute handled? And if so, do we still need it after this patch, or can we remove it from everywhere?
<rdar://problem/17249454>
Mark filed bug 133687 to look into whether we still need NoStaticTables.