Hmm, considering the debug check at svalue.c:2316 it must happen while the object is in the queue, and that should be easy to check. Here's a patch that strengthens those debug checks. Could you please try it? Be prepared to back it out quickly though, because I'm not entirely sure it's correct (that o->next != o condition is suspicious).
I'm running with these and with GC_VERBOSE turned on now. So far the slowdown is insignificant, and the amount of logdata is not a real problem.