#16311: Many unpickled objects from the pickle jar are totally broken
------------------------+------------------------------------------
Reporter: pbruin | Owner:
Type: defect | Status: new
Priority: major | Milestone: sage-6.3
Component: pickling | Keywords: corrupted pickle crash
Merged in: | Authors:
Reviewers: | Report Upstream: N/A
Work issues: | Branch:
Commit: | Dependencies:
Stopgaps: |
------------------------+------------------------------------------
There is a doctest in `sage/structure/sage_object.pyx` to verify that all
objects in the pickle jar can be unpickled to some Python object without
raising an error, but that is about it as far as checking of the
unpickling functionality for old pickles goes.
Dozens of unpickled objects are badly corrupted. For example, even asking
for their string representation often fails and in at least one case
causes Sage to crash.
After unpacking `src/ext/pickle_jar/pickle_jar.tar.bz2` and changing to
the resulting directory, run the following:
{{{
#!python
sage: files = [f for f in os.listdir('.') if f.endswith('.sobj')]
sage: for f in files:
....: try:
....: s = str(load(f))
....: except Exception, e:
....: print('%s raised %s' % (f, e))
....:
_class__sage_quadratic_forms_binary_qf_BinaryQF__.sobj raised 'BinaryQF'
object has no attribute '_a'
/usr/local/sage/sage-current/local/lib/python2.7/site-
packages/IPython/core/interactiveshell.py:2834: DeprecationWarning: This
class is replaced by Matrix_modn_dense_float/Matrix_modn_dense_double.
See http://trac.sagemath.org/4260 for details.
exec code_obj in self.user_global_ns, self.user_ns
_class__sage_combinat_set_partition_ordered_OrderedSetPartitions_scomp__.sobj
raised 'OrderedSetPartitions_scomp' object has no attribute '_set'
_class__sage_combinat_set_partition_SetPartitions_set__.sobj raised
'SetPartitions_set' object has no attribute '_set'
_type__sage_rings_morphism_RingHomomorphism_cover__.sobj raised
'QuotientRing_generic' object has no attribute '_QuotientRing_nc__R'
_class__sage_combinat_root_system_weight_space_WeightSpace__.sobj raised
'WeightSpace' object has no attribute '_name_string_helper'
_class__sage_combinat_set_partition_ordered_OrderedSetPartitions_sn__.sobj
raised 'OrderedSetPartitions_sn' object has no attribute '_set'
_class__sage_combinat_free_module_CombinatorialFreeModuleElement__.sobj
raised 'CombinatorialFreeModule' object has no attribute '_print_options'
/usr/local/sage/sage-current/src/bin/sage-ipython:3: DeprecationWarning:
OrderedAlphabet is deprecated; use Alphabet instead.
See http://trac.sagemath.org/8920 for details.
"""
_class__sage_combinat_integer_vector_weighted_WeightedIntegerVectors_nweight__.sobj
raised 'WeightedIntegerVectors_nweight' object has no attribute '_n'
_class__sage_combinat_root_system_type_G_ambient_space__.sobj raised
'AmbientSpace' object has no attribute '_name_string_helper'
_class__sage_rings_quotient_ring_QuotientRing_generic__.sobj raised
'QuotientRing_generic' object has no attribute '_QuotientRing_nc__R'
_class__sage_groups_abelian_gps_abelian_group_AbelianGroup_class__.sobj
raised 'AbelianGroup_class' object has no attribute '_gens_orders'
_class__sage_rings_number_field_galois_group_GaloisGroup__.sobj raised
'GaloisGroup_v1' object has no attribute '_GaloisGroup_v1__group'
_class__sage_modular_modform_find_generators_ModularFormsRing__.sobj
raised 'ModularFormsRing' object has no attribute
'_ModularFormsRing__base_ring'
_class__sage_combinat_root_system_type_dual_CartanType__.sobj raised
<abstract method is_affine at 0x3cd5668>
_class__sage_combinat_permutation_StandardPermutations_avoiding_321__.sobj
raised 'StandardPermutations_avoiding_321' object has no attribute 'a'
_class__sage_combinat_permutation_StandardPermutations_avoiding_123__.sobj
raised 'StandardPermutations_avoiding_123' object has no attribute 'a'
_class__sage_combinat_permutation_StandardPermutations_avoiding_312__.sobj
raised 'StandardPermutations_avoiding_312' object has no attribute 'a'
_class__sage_homology_examples_SimplicialSurface__.sobj raised
'SimplicialComplex' object has no attribute '_facets'
_class__sage_combinat_set_partition_ordered_OrderedSetPartitions_s__.sobj
raised 'OrderedSetPartitions_s' object has no attribute '_set'
_class__sage_combinat_tableau_SemistandardTableaux_p__.sobj raised
'SemistandardTableaux_shape' object has no attribute 'shape'
_class__sage_combinat_permutation_StandardPermutations_avoiding_213__.sobj
raised 'StandardPermutations_avoiding_213' object has no attribute 'a'
_class__sage_combinat_permutation_StandardPermutations_avoiding_231__.sobj
raised 'StandardPermutations_avoiding_231' object has no attribute 'a'
_class__sage_combinat_root_system_root_space_RootSpace__.sobj raised
'RootSpace' object has no attribute '_name_string_helper'
_class__sage_combinat_permutation_StandardPermutations_avoiding_132__.sobj
raised 'StandardPermutations_avoiding_132' object has no attribute 'a'
_class__sage_combinat_set_partition_SetPartitions_setparts__.sobj raised
'SetPartitions_setparts' object has no attribute '_set'
_class__sage_combinat_sf_schur_SymmetricFunctionAlgebraElement_schur__.sobj
raised 'SymmetricFunctionAlgebra_schur' object has no attribute
'_print_options'
_class__sage_combinat_tableau_StandardTableaux_partition__.sobj raised
'StandardTableaux_shape' object has no attribute 'shape'
_class__sage_combinat_tableau_Tableaux_n__.sobj raised 'Tableaux_size'
object has no attribute 'size'
_class__sage_combinat_skew_tableau_SemistandardSkewTableaux_n__.sobj
raised 'SemistandardSkewTableaux_size' object has no attribute 'max_entry'
_class__sage_combinat_set_partition_SetPartitions_setn__.sobj raised
'SetPartitions_setn' object has no attribute '_set'
_class__sage_combinat_root_system_weyl_group_WeylGroupElement__.sobj
raised 'WeylGroup_gens' object has no attribute '_prefix'
_class__sage_homology_simplicial_complex_SimplicialComplex__.sobj raised
'SimplicialComplex' object has no attribute '_facets'
_class__sage_combinat_skew_tableau_SemistandardSkewTableaux_p__.sobj
raised 'SemistandardSkewTableaux_shape' object has no attribute
'max_entry'
_class__sage_combinat_permutation_StandardPermutations_avoiding_21__.sobj
raised 'StandardPermutations_avoiding_21' object has no attribute 'a'
_class__sage_algebras_free_algebra_FreeAlgebra_generic__.sobj raised
'FreeAlgebra_generic' object has no attribute '_basis_keys'
_type__sage_rings_morphism_RingHomomorphism_im_gens__.sobj raised
'QuotientRing_generic' object has no attribute '_QuotientRing_nc__R'
_class__sage_algebras_free_algebra_quotient_element_FreeAlgebraQuotientElement__.sobj
raised 'FreeAlgebra_generic' object has no attribute '_basis_keys'
_class__sage_algebras_free_algebra_element_FreeAlgebraElement__.sobj
raised 'FreeAlgebraElement' object has no attribute
'_monomial_coefficients'
_class__sage_combinat_root_system_weyl_group_WeylGroup_gens__.sobj raised
'WeylGroup_gens' object has no attribute '_domain'
_class__sage_combinat_permutation_StandardPermutations_avoiding_12__.sobj
raised 'StandardPermutations_avoiding_12' object has no attribute 'a'
_class__sage_rings_homset_RingHomset_quo_ring__.sobj raised
'QuotientRing_generic' object has no attribute '_QuotientRing_nc__R'
_class__sage_combinat_alternating_sign_matrix_AlternatingSignMatrices_n__.sobj
raised 'AlternatingSignMatrices' object has no attribute '_n'
_class__sage_schemes_generic_hypersurface_AffineHypersurface__.sobj raised
'AffineSpace_generic' object has no attribute '_dimension_relative'
sig_error() without sig_on()
...
Unhandled SIGABRT: An abort() occurred in Sage.
This probably occurred because a *compiled* component of Sage has a bug
in it and is not properly wrapped with sig_on(), sig_off().
Sage will now terminate.
}}}
The following doctest marked "# not tested" from
`sage.structure.sage_object.unpickle_all` also uncovers many errors,
although many of these are due to the `TestSuite` failing, as indicated in
the docstring:
{{{
sage: sage.structure.sage_object.unpickle_all(run_test_suite=True)
* unpickle failure:
TestSuite(load('/home/pbruin/.sage/temp/selmer/28748/dir_5OzW9h//pickle_jar/_class__sage_algebras_free_algebra_FreeAlgebra_generic__.sobj')).run()
* unpickle failure:
TestSuite(load('/home/pbruin/.sage/temp/selmer/28748/dir_5OzW9h//pickle_jar/_class__sage_algebras_free_algebra_element_FreeAlgebraElement__.sobj')).run()
* unpickle failure:
TestSuite(load('/home/pbruin/.sage/temp/selmer/28748/dir_5OzW9h//pickle_jar/_class__sage_algebras_free_algebra_quotient_FreeAlgebraQuotient__.sobj')).run()
...
[dozens of similar errors and various other ones]
...
* unpickle failure:
TestSuite(load('/home/pbruin/.sage/temp/selmer/28748/dir_5OzW9h//pickle_jar/_class__sage_combinat_sf_jack_JackPolynomials_q__.sobj')).run()
* unpickle failure:
TestSuite(load('/home/pbruin/.sage/temp/selmer/28748/dir_5OzW9h//pickle_jar/_class__sage_combinat_sf_llt_LLT_cospin__.sobj')).run()
* unpickle failure:
TestSuite(load('/home/pbruin/.sage/temp/selmer/28748/dir_5OzW9h//pickle_jar/_class__sage_combinat_sf_llt_LLT_spin__.sobj')).run()
sig_error() without sig_on()
...
Unhandled SIGABRT: An abort() occurred in Sage.
This probably occurred because a *compiled* component of Sage has a bug
in it and is not properly wrapped with sig_on(), sig_off().
Sage will now terminate.
}}}
It looks like we have lots of unpickling functions to repair.
--
Ticket URL: <http://trac.sagemath.org/ticket/16311>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.