<html aria-label="message body"><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">Done!<div><br></div><div>christos<br id="lineBreakAtBeginningOfMessage"><div><br><blockquote type="cite"><div>On Feb 16, 2026, at 3:26 AM, Vincent Mihalkovic <vmihalko@redhat.com> wrote:</div><br class="Apple-interchange-newline"><div><p><defanged_div dir="ltr"></defanged_div></p><p defanged_style="color:rgb(0,0,0)"><defanged_span style="font-family:arial,sans-serif">Hi,</defanged_span></p><p defanged_style="color:rgb(0,0,0)"><defanged_span style="font-family:arial,sans-serif">Thank you for accepting the patch — I appreciate it.</defanged_span></p><p defanged_style="color:rgb(0,0,0)"><defanged_span style="font-family:arial,sans-serif">I noticed that the merged change keeps the conditional guard in</defanged_span><defanged_span class="gmail-Apple-converted-space" style="font-family:arial,sans-serif"> </defanged_span><code>close()</code><defanged_span style="font-family:arial,sans-serif">, but does not include:</defanged_span><br><defanged_span style="font-family:arial,sans-serif"> self._close = _close</defanged_span><br><defanged_span style="font-family:arial,sans-serif">That line was intended to cache the</defanged_span><defanged_span class="gmail-Apple-converted-space" style="font-family:arial,sans-serif"> </defanged_span><code>magic_close</code><defanged_span class="gmail-Apple-converted-space" style="font-family:arial,sans-serif"> </defanged_span><defanged_span style="font-family:arial,sans-serif">function on the instance. The current</defanged_span><defanged_span class="gmail-Apple-converted-space" style="font-family:arial,sans-serif"> </defanged_span><code>if _close:</code><defanged_span class="gmail-Apple-converted-space" style="font-family:arial,sans-serif"> </defanged_span><defanged_span style="font-family:arial,sans-serif">avoids the traceback, but it still relies on the module-global</defanged_span><defanged_span class="gmail-Apple-converted-space" style="font-family:arial,sans-serif"> </defanged_span><code>_close</code><defanged_span style="font-family:arial,sans-serif">, which may already be cleared during interpreter shutdown. Storing the function on the instance ensures it remains available when</defanged_span><defanged_span class="gmail-Apple-converted-space" style="font-family:arial,sans-serif"> </defanged_span><code>__del__</code><defanged_span class="gmail-Apple-converted-space" style="font-family:arial,sans-serif"> </defanged_span><defanged_span style="font-family:arial,sans-serif">runs.</defanged_span></p><p defanged_style="color:rgb(0,0,0)"><defanged_span style="font-family:arial,sans-serif">Would you consider also adding the</defanged_span><defanged_span class="gmail-Apple-converted-space" style="font-family:arial,sans-serif"> </defanged_span><code>self._close = _close</code><defanged_span class="gmail-Apple-converted-space" style="font-family:arial,sans-serif"> </defanged_span><defanged_span style="font-family:arial,sans-serif">line?</defanged_span></p><p defanged_style="color:rgb(0,0,0)"><defanged_span style="font-family:arial,sans-serif">Best regards,</defanged_span><br><defanged_span style="font-family:arial,sans-serif">Vincent</defanged_span><br></p><div><br class="webkit-block-placeholder"></div><defanged_div><br><p><defanged_div class="gmail_quote gmail_quote_container"></defanged_div></p><p><defanged_div dir="ltr" class="gmail_attr">On Tue, Feb 10, 2026 at 1:52 PM Vincent Mihalkovic <<a href="mailto:vmihalko@redhat.com">vmihalko@redhat.com</a>> wrote:<br></defanged_div></p><defanged_div><blockquote class="gmail_quote" defanged_style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><p><defanged_div dir="ltr"></defanged_div></p><p><defanged_span style="">Hi,</defanged_span><br><font><defanged_span><br></defanged_span></font><defanged_span style="">I am seeing a</defanged_span><defanged_span style=""> </defanged_span><defanged_span style="">TypeError</defanged_span><defanged_span style=""> </defanged_span><defanged_span style="">at Python interpreter shutdown when using the Python bindings shipped with file (</defanged_span><defanged_span style="">python/magic.py</defanged_span><defanged_span style="">).</defanged_span><br><font><defanged_span><br></defanged_span></font><defanged_span style="">MagicDetect.__del__()</defanged_span><defanged_span style=""><defanged_span> </defanged_span>calls<defanged_span> </defanged_span></defanged_span><defanged_span style="">Magic.close()</defanged_span><defanged_span style=""><defanged_span> </defanged_span>(see</defanged_span><defanged_span> </defanged_span><defanged_span style=""><a href="https://github.com/file/file/blob/master/python/magic.py#L300-L310" target="_blank">https://github.com/file/file/blob/master/python/magic.py#L300-L310</a>), </defanged_span><defanged_span style="">which in turn calls the module-global</defanged_span><defanged_span style=""> </defanged_span><defanged_span style="">_close</defanged_span><defanged_span style=""> </defanged_span><defanged_span style="">in</defanged_span><defanged_span style=""> </defanged_span><defanged_span style="">Magic.close()</defanged_span><defanged_span style=""> </defanged_span><defanged_span style="">(see </defanged_span><defanged_span style=""><a href="https://github.com/file/file/blob/master/python/magic.py#L130-L136" target="_blank">https://github.com/file/file/blob/master/python/magic.py#L130-L136</a>).</defanged_span></p><p><defanged_span style="">During interpreter shutdown, module globals may already be cleared, so</defanged_span><defanged_span style=""> </defanged_span><defanged_span style="">_close</defanged_span><defanged_span style=""> </defanged_span><defanged_span style="">can become</defanged_span><defanged_span style=""> </defanged_span><defanged_span style="">None</defanged_span><defanged_span style="">, resulting in: </defanged_span><defanged_span style="">TypeError: ‘NoneType’ object is not callable</defanged_span><br><font><defanged_span><br></defanged_span></font><defanged_span style="">The attached patch avoids relying on the module-global</defanged_span><defanged_span style=""> </defanged_span><defanged_span style="">_close</defanged_span><defanged_span style=""> </defanged_span><defanged_span style="">during finalization by caching the</defanged_span><defanged_span style=""> </defanged_span><defanged_span style="">magic_close</defanged_span><defanged_span style=""> </defanged_span><defanged_span style="">function pointer on the</defanged_span><defanged_span style=""> </defanged_span><defanged_span style="">Magic</defanged_span><defanged_span style=""> </defanged_span><defanged_span style="">instance and using that in</defanged_span><defanged_span style=""> </defanged_span><defanged_span style="">close()</defanged_span><defanged_span style="">. This prevents the shutdown exception without changing normal runtime behavior.</defanged_span><br><font><defanged_span><br></defanged_span></font><defanged_span style="">Related downstream report:</defanged_span><br><defanged_span style=""><a href="https://bugzilla.redhat.com/show_bug.cgi?id=2419719" target="_blank">https://bugzilla.redhat.com/show_bug.cgi?id=2419719</a></defanged_span><br><font><defanged_span><br></defanged_span></font><defanged_span style="">Best regards,</defanged_span><br><defanged_span style="">Vincent</defanged_span><br></p><div><br class="webkit-block-placeholder"></div><defanged_div>
</defanged_div></blockquote><div><br class="webkit-block-placeholder"></div><defanged_div>
-- <br>File mailing list<br>File@astron.com<br>https://mailman.astron.com/mailman/listinfo/file<br><span id="cid:E02B0617-2946-4C72-B42F-468837693281"><sanitizer.log></span></defanged_div></defanged_div></defanged_div></div></blockquote></div><br></div></body></html>