Macaulay2 / M2

The primary source code repository for Macaulay2, a system for computing in commutative algebra, algebraic geometry and related fields.
https://macaulay2.com
343 stars 231 forks source link

irreducibleCharacteristicSeries segfault #3497

Open pzinn opened 2 weeks ago

pzinn commented 2 weeks ago

should probably be fixed, it's annoying:

i1 : R=QQ[x]

o1 = R

o1 : PolynomialRing

i2 : I=ideal R

o2 = ideal ()

o2 : Ideal of R

i3 : irreducibleCharacteristicSeries I
-- SIGSEGV
-* stack trace, pid: 15915
 0# boost::stacktrace::basic_stacktrace<std::allocator<boost::stacktrace::frame> >::basic_stacktrace() at /usr/include/boost/stacktrace/stacktrace.hpp:129
 1# segv_handler at /home/pzinn/M2/M2/Macaulay2/bin/main.cpp:249
 2# 0x00007F6DFE44FD00 in /lib64/libc.so.6
 3# get_max_var(List<CanonicalForm> const&) in /lib64/libfactory-4.4.0.so
 4# neworder(List<CanonicalForm> const&) in /lib64/libfactory-4.4.0.so
 5# neworderint(List<CanonicalForm> const&) in /lib64/libfactory-4.4.0.so
 6# rawIdealReorder at /home/pzinn/M2/M2/Macaulay2/e/interface/factory.cpp:790
 7# interface_rawIdealReorder at /home/pzinn/M2/M2/BUILD/fedora/Macaulay2/d/interface-tmp.cc:1483
 8# evaluate_evalraw at /home/pzinn/M2/M2/Macaulay2/d/evaluate.d:1492
 9# evaluate_evalraw at /home/pzinn/M2/M2/Macaulay2/d/evaluate.d:1529
10# evaluate_evalraw at /home/pzinn/M2/M2/Macaulay2/d/evaluate.d:1600
11# evaluate_applyFCE at /home/pzinn/M2/M2/Macaulay2/d/evaluate.d:805
12# evaluate_evalraw at /home/pzinn/M2/M2/Macaulay2/d/evaluate.d:1501 (discriminator 1)
13# evaluate_evalexcept at /home/pzinn/M2/M2/Macaulay2/d/evaluate.d:1650
14# readeval3(parse_TokenFile_struct*, char, parse_DictionaryClosure_struct*, char, char, char) at /home/pzinn/M2/M2/Macaulay2/d/interp.dd:187
15# loadprint(M2_string_struct*, parse_DictionaryClosure_struct*, char) at /home/pzinn/M2/M2/Macaulay2/d/interp.dd:357
16# commandInterpreter_2(tagged_union*) at /home/pzinn/M2/M2/Macaulay2/d/interp.dd:477 (discriminator 1)
17# evaluate_evalraw at /home/pzinn/M2/M2/Macaulay2/d/evaluate.d:1492
18# evaluate_evalraw at /home/pzinn/M2/M2/Macaulay2/d/evaluate.d:1529
19# evaluate_evalraw at /home/pzinn/M2/M2/Macaulay2/d/evaluate.d:1596
20# evaluate_evalexcept at /home/pzinn/M2/M2/Macaulay2/d/evaluate.d:1650
21# readeval3(parse_TokenFile_struct*, char, parse_DictionaryClosure_struct*, char, char, char) at /home/pzinn/M2/M2/Macaulay2/d/interp.dd:187
22# readeval(parse_TokenFile_struct*, char, char) at /home/pzinn/M2/M2/Macaulay2/d/interp.dd:294 (discriminator 1)
23# interp_process at /home/pzinn/M2/M2/Macaulay2/d/interp.dd:626 (discriminator 1)
24# interpFunc(ArgCell*) at /home/pzinn/M2/M2/Macaulay2/bin/main.cpp:201
25# ThreadTask::run(SupervisorThread*) at /home/pzinn/M2/M2/Macaulay2/system/supervisor.cpp:359 (discriminator 1)
26# SupervisorThread::threadEntryPoint() at /home/pzinn/M2/M2/Macaulay2/system/supervisor.cpp:404
27# SupervisorThread::threadEntryPoint(void*) at /home/pzinn/M2/M2/Macaulay2/system/supervisor.hpp:89
28# 0x00007F6DFFEE1AF6 in /lib64/libgc.so.1
29# GC_call_with_stack_base in /lib64/libgc.so.1
30# 0x00007F6DFE4A66D7 in /lib64/libc.so.6
31# 0x00007F6DFE52A60C in /lib64/libc.so.6
-- end stack trace *-
pzinn commented 2 weeks ago

oh, is it a factory bug?

d-torrance commented 2 weeks ago

The segfault is happening in factory, but it's because we're calling a factory function with an empty list. So we should probably check that it's nonempty first.