You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
fix(corekit): an Info cannot be pickled under protocols 0 and 1 on GraalPy #2714
After pickling, the original datagram no longer holds a Deferred: the assertion reads … is not an instance of Deferred. The failures are present on main from fc407c383 and absent at a25eb0e39. The likely commits are #2605, #2619 and #2622, but which one is unverified. Closed #2433 covered a related GraalPy Deferred pickling defect.
Find the commit and the mechanism, decide whether the code or the test is wrong on GraalPy, and fix it so the leg stays green.
The other 48 failures are an artefact of the report. pytest's repr of the failing frame resolves the DeferredPacket, so later protocols in the same test find it already resolved.
Fix, in Info.__reduce_ex__: always use the protocol-2 reduction, which skips that walk. There is no GraalPy-specific branch. A test that stands in for GraalPy's Generic fails 54 cases on base. The now-unneeded GraalPy protocol gates in tests are being dropped in the same commit, so this PR's GraalPy leg proves the fix.
changed the title [-]fix(reassembly): a pickled Deferred datagram loses its Deferred on GraalPy[/-][+]fix(corekit): an Info cannot be pickled under protocols 0 and 1 on GraalPy[/+]on Nov 3, 2026
Activity
JarryShaw commentedon Nov 3, 2026
Root cause found. It is not a reassembly regression, and pickling never mutates the original.
Infopickles under protocol 0 or 1.copyreg._reduce_exstops at the first base that is not a heap type, and on GraalPy that istyping.Generic. That gives 32TypeError: typing.Generic() takes no arguments. refactor(reassembly): bring DTLS reassembly to IP/TCP parity #2605, refactor(analysis): give IP and TCP reassembly their own foundation.analysis modules #2619 and refactor(analysis): DTLS's foundation analysis wraps a DTLS protocol method, and the analysis convention is written down #2622 only added the first tests that pickle a datagram under those protocols.reprof the failing frame resolves theDeferredPacket, so later protocols in the same test find it already resolved.Info.__reduce_ex__: always use the protocol-2 reduction, which skips that walk. There is no GraalPy-specific branch. A test that stands in for GraalPy'sGenericfails 54 cases on base. The now-unneeded GraalPy protocol gates in tests are being dropped in the same commit, so this PR's GraalPy leg proves the fix.[-]fix(reassembly): a pickled Deferred datagram loses its Deferred on GraalPy[/-][+]fix(corekit): an Info cannot be pickled under protocols 0 and 1 on GraalPy[/+]JarryShaw commentedon Nov 3, 2026
The PR is #2722.
fix(corekit): share the pickle reductions in pcapkit.utilities.pickle…
fix(corekit): share the pickle reductions in pcapkit.utilities.pickle…
fix(corekit): pickle an Info or Schema under protocols 0 and 1 throug…
test: keep the GraalPy pickle stand-in working on PyPy (#2714)