Opened 8 years ago
Closed 8 years ago
#13636 closed defect (duplicate)
%timeit unpickle_all() causes a SEGABRT
Reported by: | andrew.mathas | Owned by: | was |
---|---|---|---|
Priority: | major | Milestone: | sage-duplicate/invalid/wontfix |
Component: | pickling | Keywords: | |
Cc: | Merged in: | ||
Authors: | Reviewers: | Travis Scrimshaw | |
Report Upstream: | N/A | Work issues: | |
Branch: | Commit: | ||
Dependencies: | Stopgaps: |
Description (last modified by )
CLOSED AS DUPLICATE OF #10705
The subject says it all: Sage gives a SEGABRT with the following:
sage: %timeit sage.structure.sage_object.unpickle_all() ------------------------------------------------------------------------ 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(). You might want to run Sage under gdb with 'sage -gdb' to debug this. Sage will now terminate. ------------------------------------------------------------------------ /usr/local/src/sage/sage-5.4.rc1/spkg/bin/sage: line 310: 60549 Abort trap: 6 sage-ipython "$@" -i
Note, however, that the following is OK:
sage: sage.structure.sage_object.unpickle_all() /usr/local/src/sage/sage-5.4.rc1/local/lib/python2.7/site-packages/IPython/iplib.py:2260: 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 Successfully unpickled 594 objects. Failed to unpickle 0 objects.
as is calling unpickle()
with an argument:
sage: sage: dir = tmp_dir() sage: sage: sage.structure.sage_object.picklejar('hello', dir) sage: sage: sage.structure.sage_object.unpickle_all(dir) Successfully unpickled 1 objects. Failed to unpickle 0 objects. sage: %timeit sage.structure.sage_object.unpickle_all(dir) 625 loops, best of 3: 91.5 µs per loop
I get this error for versions 5.3 and 5.4.rc1 running on a macbook pro with lion.
I initially thought that perhaps timeit did not like calling itself, however, this seems to be OK because the following does work:
sage: def fred():^J timeit('2^10000', preparse=False, number=100) ....: sage: fred() 100 loops, best of 3: 31 ns per loop sage: %timeit fred 625 loops, best of 3: 38.5 ns per loop
I tried running through sage -gdb but I don't know how to interpret the outout. Here is the tail of what it produces:
Reading symbols for shared libraries warning: .o file "/usr/local/src/sage/sage-5.3/devel/sage-main/build/temp.macosx-10.7-x86_64-2.7/sage/matrix/matrix_symbolic_dense.o" more recent than executable timestamp in "/usr/local/src/sage/sage-5.3/devel/sage-combinat/build/sage/matrix/matrix_symbolic_dense.so" warning: Could not open OSO file /usr/local/src/sage/sage-5.3/devel/sage-main/build/temp.macosx-10.7-x86_64-2.7/sage/matrix/matrix_symbolic_dense.o to scan for pubtypes for objfile /usr/local/src/sage/sage-5.3/devel/sage-combinat/build/sage/matrix/matrix_symbolic_dense.so . done Reading symbols for shared libraries warning: .o file "/usr/local/src/sage/sage-5.3/devel/sage-main/build/temp.macosx-10.7-x86_64-2.7/sage/rings/polynomial/symmetric_reduction.o" more recent than executable timestamp in "/usr/local/src/sage/sage-5.3/devel/sage-combinat/build/sage/rings/polynomial/symmetric_reduction.so" warning: Could not open OSO file /usr/local/src/sage/sage-5.3/devel/sage-main/build/temp.macosx-10.7-x86_64-2.7/sage/rings/polynomial/symmetric_reduction.o to scan for pubtypes for objfile /usr/local/src/sage/sage-5.3/devel/sage-combinat/build/sage/rings/polynomial/symmetric_reduction.so . done Program received signal SIGABRT, Aborted. 0x00007fff8d58f82a in __kill ()
Change History (7)
comment:1 Changed 8 years ago by
- Description modified (diff)
comment:2 Changed 8 years ago by
comment:3 follow-up: ↓ 4 Changed 8 years ago by
See #10705 for another seg fault associated with unpickle_all.
comment:4 in reply to: ↑ 3 ; follow-up: ↓ 5 Changed 8 years ago by
Replying to andrew.mathas:
See #10705 for another seg fault associated with unpickle_all.
Well ... %timeit
will run its code a couple of times to get accurate timing information, so if (as the ticket mentions) running unpickle_all()
twice causes a crash then %timeit unpickle_all()
should too.
comment:5 in reply to: ↑ 4 Changed 8 years ago by
- Description modified (diff)
- Milestone changed from sage-5.7 to sage-duplicate/invalid/wontfix
- Status changed from new to needs_review
Replying to nbruin:
Replying to andrew.mathas:
See #10705 for another seg fault associated with unpickle_all.
Well ...
%timeit
will run its code a couple of times to get accurate timing information, so if (as the ticket mentions) runningunpickle_all()
twice causes a crash then%timeit unpickle_all()
should too.
OK, let's close this as a duplicate then. I'll set it as needs review. Could you please "review" it Nils?
comment:6 Changed 8 years ago by
- Reviewers set to Travis Scrimshaw
- Status changed from needs_review to positive_review
I agree that this is a duplicate.
comment:7 Changed 8 years ago by
- Resolution set to duplicate
- Status changed from positive_review to closed
Usually asking for the stack backtrace is one of the most interesting things:
So, the error happens in NTL. I suppose that this is an error that normally gets caught appropriately but due to
%timeit
doesn't? The alternative is that the whole%timeit
thing happens to cause a state in NTL we aren't normally encountering.