That's because the solution with a separate VirtualProtect call doesn't work at all. It's fixed in 7.7 by using the mexec_malloc stuff on windows too to allocate PAGE_EXECUTE_READWRITE pages from the start, but the patch for that is a bit largish (several checkins on August 9th).
There is a chance that it works anyway if dlmalloc is disabled (if the windows builtin heap manager never concatenates blocks allocated by different VirtualAlloc calls).