<div dir="auto"><br><div class="gmail_extra" dir="auto"><br><div class="gmail_quote">On 28 Jul 2017 00:54, "Nick Coghlan" <<a href="mailto:ncoghlan@gmail.com">ncoghlan@gmail.com</a>> wrote:<blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
The fact that disorderfs makes a difference does make me a little<br>
suspicious, as there's an early exit from the FLAG_REF setting code<br>
related to objects having exactly one live reference. Courtesy of<br>
string interning and other immutable object caches, order of code<br>
compilation can affect how many live references there are to strings<br>
and other constants, and hence there may be cases where marshal<br>
*won't* flag an immutable object if *only* that particular code object<br>
has been compiled, but *will* flag it if some other code object has<br>
been created first. That check has been there since version 3 of the<br>
marshal format was defined, so if it *is* the culprit, then you'll see<br>
this misbehaviour with 3.4 as well.<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">It occurs to me that it would likely be easier for you to just test that theory directly: the check that now seems suspicious to me is the one that calls "Py_REFCNT" (and is the only reference to that API  in the file), so if you comment that out, and the problem goes away, it is most likely the cause of the currently variable behaviour.</div><div dir="auto"><br></div><div dir="auto">Cheers,</div><div dir="auto">Nick.</div></div>