Non-contiguous path exception in Geom::Path::do_append

Bug #1474359 reported by Renata Hodovan
12
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Inkscape
Invalid
Medium
Unassigned

Bug Description

OS: Ubunu 15.04, x86_64

Inkscape version:
  revno: 14243
  branch nick: inkscape

Test case:

<svg>
    <path d=" m 9. 45E+7 -3 -693 -4e-766 .3718e7 4,3425E0681,+98 -3.0e02643 -9. 9"></path>
</svg>

Extra flags:
    -z // run without GUI

Backtrace:
terminate called after throwing an instance of 'Geom::ContinuityError'
  what(): lib2geom exception: Non-contiguous path (2geom/path.cpp:990)
[New Thread 0x7fffe4894700 (LWP 29487)]
[New Thread 0x7fffe5095700 (LWP 29486)]

Program received signal SIGABRT, Aborted.
0x00007fffefe5e267 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:55
55 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0 0x00007fffefe5e267 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:55
#1 0x00007fffefe5feca in __GI_abort () at abort.c:89
#2 0x00007ffff099006d in __gnu_cxx::__verbose_terminate_handler() () at ../../../../src/libstdc++-v3/libsupc++/vterminate.cc:95
#3 0x00007ffff098dee6 in __cxxabiv1::__terminate(void (*)()) (handler=<optimized out>) at ../../../../src/libstdc++-v3/libsupc++/eh_terminate.cc:47
#4 0x00007ffff098df31 in std::terminate() () at ../../../../src/libstdc++-v3/libsupc++/eh_terminate.cc:57
#5 0x00007ffff098e149 in __cxxabiv1::__cxa_throw(void*, std::type_info*, void (*)(void*)) (obj=0x17780c0, tinfo=0xf8d440 <typeinfo for Geom::ContinuityError>, dest=0xcb4e80 <Geom::ContinuityError::~ContinuityError()>) at ../../../../src/libstdc++-v3/libsupc++/eh_throw.cc:87
#6 0x0000000000cafda5 in Geom::Path::do_append(Geom::Curve*) (this=this@entry=0x7fffffffd018, c=c@entry=0x1771260) at 2geom/path.cpp:990
#7 0x0000000000c80fd2 in Geom::BezierCurveN<1u>::feed(Geom::PathSink&, bool) const (a=..., this=0x7fffffffd018) at ./2geom/path.h:734
#8 0x0000000000c80fd2 in Geom::BezierCurveN<1u>::feed(Geom::PathSink&, bool) const (p=..., this=<optimized out>) at ./2geom/path-sink.h:134
#9 0x0000000000c80fd2 in Geom::BezierCurveN<1u>::feed(Geom::PathSink&, bool) const (this=<optimized out>, sink=..., moveto_initial=<optimized out>)
    at 2geom/bezier-curve.cpp:289
#10 0x0000000000ce8921 in Geom::SVGPathParser::_pushCurve(Geom::Curve*) (this=0x7fffffffd070, c=0x0)
    at /home/tweenk/src/lib2geom/src/2geom/svg-path-parser.rl:195
#11 0x0000000000ce9f3e in Geom::SVGPathParser::_parse(char const*, char const*, bool) (this=0x7fffffffd070, str=0x731e <error: Cannot access memory at address 0x731e>,
    str@entry=0x15cdb40 " m 9. 45E+7 -3 -693 -4e-766 .3718e7 4,3425E0681,+98 -3.0e02643 -9. 9", strend=0x6 <error: Cannot access memory at address 0x6>, finish=255, finish@entry=true) at /home/tweenk/src/lib2geom/src/2geom/svg-path-parser.rl:446
#12 0x0000000000cea718 in Geom::SVGPathParser::parse(char const*, int) (this=this@entry=0x7fffffffd070, str=str@entry=0x15cdb40 " m 9. 45E+7 -3 -693 -4e-766 .3718e7 4,3425E0681,+98 -3.0e02643 -9. 9", len=<optimized out>, len@entry=-1) at /home/tweenk/src/lib2geom/src/2geom/svg-path-parser.rl:81
#13 0x000000000081aa7a in sp_svg_read_pathv(char const*) (str=0x15cdb40 " m 9. 45E+7 -3 -693 -4e-766 .3718e7 4,3425E0681,+98 -3.0e02643 -9. 9")
    at svg/svg-path.cpp:51
#14 0x00000000005b1591 in SPPath::set(unsigned int, char const*) (this=0x1772f90, key=<optimized out>, value=<optimized out>) at sp-path.cpp:209
#15 0x00000000005b12a4 in SPPath::build(SPDocument*, Inkscape::XML::Node*) (this=0x1772f90, document=<optimized out>, repr=<optimized out>) at sp-path.cpp:166
#16 0x00000000005a95ca in SPObject::invoke_build(SPDocument*, Inkscape::XML::Node*, unsigned int) (this=0x1772f90, document=0x17bbea0, repr=0x17b9b20, cloned=<optimized out>) at sp-object.cpp:758
#17 0x00000000005abb98 in SPObject::build(SPDocument*, Inkscape::XML::Node*) (this=this@entry=0x17750b0, document=document@entry=0x17bbea0, repr=repr@entry=0x17b9c10) at sp-object.cpp:698
#18 0x000000000058024b in SPItem::build(SPDocument*, Inkscape::XML::Node*) (this=this@entry=0x17750b0, document=document@entry=0x17bbea0, repr=repr@entry=0x17b9c10) at sp-item.cpp:409
#19 0x0000000000593829 in SPLPEItem::build(SPDocument*, Inkscape::XML::Node*) (this=this@entry=0x17750b0, document=document@entry=0x17bbea0, repr=repr@entry=0x17b9c10) at sp-lpe-item.cpp:80
#20 0x0000000000583689 in SPGroup::build(SPDocument*, Inkscape::XML::Node*) (this=this@entry=0x17750b0, document=document@entry=0x17bbea0, repr=repr@entry=0x17b9c10) at sp-item-group.cpp:71
#21 0x00000000005b943c in SPRoot::build(SPDocument*, Inkscape::XML::Node*) (this=0x17750b0, document=0x17bbea0, repr=0x17b9c10) at sp-root.cpp:73
#22 0x00000000005a95ca in SPObject::invoke_build(SPDocument*, Inkscape::XML::Node*, unsigned int) (this=0x17750b0, document=0x17bbea0, repr=0x17b9c10, cloned=<optimized out>) at sp-object.cpp:758
#23 0x00000000004af7a1 in SPDocument::createDoc(Inkscape::XML::Document*, char const*, char const*, char const*, unsigned int, SPDocument*) (rdoc=rdoc@entry=
    0x17a9a60, uri=uri@entry=0x14d3940 "inkscape/Geom_Path_do_append/crash.svg", base=base@entry=0x17720d0 "inkscape/Geom_Path_do_append/", name=name@entry=0x176ed20 "crash.svg", keepalive=keepalive@entry=1, parent=parent@entry=0x0) at document.cpp:383
#24 0x00000000004b0bee in SPDocument::createNewDoc(char const*, unsigned int, bool, SPDocument*) (uri=0x14d3940 "inkscape/Geom_Path_do_append/crash.svg", keepalive=1, make_new=<optimized out>, parent=0x0) at document.cpp:558
#25 0x0000000000676d21 in Inkscape::Extension::Input::open(char const*) (this=0x14dfab0, uri=uri@entry=0x14d3940 "inkscape/Geom_Path_do_append/crash.svg")
    at extension/input.cpp:153
#26 0x0000000000674886 in Inkscape::Extension::open(Inkscape::Extension::Extension*, char const*) (key=key@entry=0x0, filename=filename@entry=0x14d3940 "inkscape/Geom_Path_do_append/crash.svg") at extension/system.cpp:117
Python Exception <class 'TypeError'> iter() returned non-iterator of type '_iterator':
#27 0x0000000000472377 in sp_process_file_list(GSList*) (fl=0x14cb3b0) at main.cpp:1107
#28 0x00000000004738dd in sp_main_console(int, char const**) (argc=3, argv=0x7fffffffd918) at main.cpp:1341
#29 0x00007fffefe49a40 in __libc_start_main (main=
    0x459690 <main(int, char**)>, argc=3, argv=0x7fffffffd918, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffd908) at libc-start.c:289
#30 0x0000000000470569 in _start ()

Tags: 2geom crash
Revision history for this message
Renata Hodovan (hodovan) wrote :
Revision history for this message
su_v (suv-lp) wrote :

Modified test case with required namespace declaration to be viewable in other SVG viewers

tags: added: 2geom crash
Revision history for this message
su_v (suv-lp) wrote :

Reproduced with Inkscape 0.48.5 r10040, 0.91 r13725 and 0.91+devel r14245 on OS X 10.7.5.
(crash is not a regression related to recent 2geom updated)

Changed in inkscape:
importance: Undecided → Medium
status: New → Confirmed
Revision history for this message
jazzynico (jazzynico) wrote :

Also reproduced on Windows XP (32bit) with Inkscape trunk rev. 14285.

Changed in inkscape:
status: Confirmed → Triaged
Revision history for this message
Nathan Lee (nathan.lee) wrote :

Hi - thanks for reporting this bug, I've manually migrated it to Inkscape's new bug tracker on GitLab, and closed it here.

Please feel free to file new bugs about the issues you're seeing at
http://inkscape.org/report.

Moved to: https://gitlab.com/inkscape/inbox/-/issues/3097

Changed in inkscape:
status: Triaged → Invalid
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.