Is the code below expected to be running in the thread created by System.runFinalization()? If so, check for that, i.e. that the thread name is as you expect.
61 } else { 62 /* 63 * A 'non-finalizer' thread in this context means that we 64 * are processing the GC.run_finalization command. Proceed 65 * with the finalization.