I think I nailed the big threading bug here. You see I was using the main interpreter to store shared svs, now this is pretty silly since the main interpreter is well, used to executing the main thread! So we would get random segfaults. So I fixed up perl so you could do perl_alloc perl_construct and then use it for SV/AV/HVs, however this kind of broke because perl_parse was init PL_strtab and some other stuff, so I moved that stuff to perl_contruct and construct a new plain empty interpreter to keep my shared svs in, and now it works!
You might think this sounds easy, and it is, but it has been avoiding me for a month now, it struck me while U was drying home made pasta.
So know I have to add threads::shared to the mix and be happy.