drawing a polyline with coordinates <=0 in log mode crashes Scilab
Reported by Serge STEER
Originally assigned to Simon MARCHETTO
BUG DESCRIPTION:
----------------
Drawing a polyline with coordinates <=0 in log mode crashes Scilab
ERROR LOG:
----------
None,
Scilab frozes for a while and then crashes:
Pile d'appel�:
1: 0x914da6 <JVM_handle_linux_signal> (/home/steer/scilab-6.0.0-beta-1/thirdparty/java//lib/amd64/server/libjvm.so)
2: 0x90b6f3 < > (/home/steer/scilab-6.0.0-beta-1/thirdparty/java//lib/amd64/server/libjvm.so)
3: 0xf890 < > (/lib64/libpthread.so.0)
4: 0x47f80 <_IO_vfprintf> (/lib64/libc.so.6)
5: 0x71a99 <vsnprintf> (/lib64/libc.so.6)
6: 0x506e2 <snprintf> (/lib64/libc.so.6)
7: 0x1d93e2 < > (/home/steer/scilab-6.0.0-beta-1/lib/scilab/libscilab-cli.so.0)
8: 0xf890 < > (/lib64/libpthread.so.0)
9: 0x35187 <gsignal> (/lib64/libc.so.6)
10: 0x36538 <abort> (/lib64/libc.so.6)
11: 0x65145 <__gnu_cxx::__verbose_terminate_handler()> (/usr/lib64/libstdc++.so.6)
12: 0x632e6 < > (/usr/lib64/libstdc++.so.6)
13: 0x63313 < > (/usr/lib64/libstdc++.so.6)
14: 0x63532 < > (/usr/lib64/libstdc++.so.6)
15: 0x26907 <org_scilab_modules_graphic_objects::CallGraphicController::setGraphicObjectProperty(JavaVM_*, int, int, double const*, int)> (/home/steer/scilab-6.0.0-beta-1/lib/scilab/libscigraphic_objects.so.6)
16: 0x30a9f <setGraphicObjectPropertyAndWarn> (/home/steer/scilab-6.0.0-beta-1/lib/scilab/libscigraphic_objects.so.6)
17: 0x7317d < > (/home/steer/scilab-6.0.0-beta-1/lib/scilab/libscigraphics.so.6)
18: 0x719b4 <Objpoly> (/home/steer/scilab-6.0.0-beta-1/lib/scilab/libscigraphics.so.6)
19: 0x2baad <sci_xpoly> (/home/steer/scilab-6.0.0-beta-1/lib/scilab/libscigraphics.so.6)
20: 0x3c1a13 <types::WrapFunction::call(std::vector<types::InternalType*, std::allocator<types::InternalType*> >&, std::unordered_map<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >, types::InternalType*, std::hash<std::basic_string<wcha> (/home/steer/scilab-6.0.0-beta-1/lib/scilab/libsciast.so.6)
21: 0x3b7048 <types::Callable::invoke(std::vector<types::InternalType*, std::allocator<types::InternalType*> >&, std::unordered_map<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >, types::InternalType*, std::hash<std::basic_string<wchar_> (/home/steer/scilab-6.0.0-beta-1/lib/scilab/libsciast.so.6)
22: 0x1c1714 <ast::RunVisitorT<ast::ExecVisitor>::visitprivate(ast::CallExp const&)> (/home/steer/scilab-6.0.0-beta-1/lib/scilab/libsciast.so.6)
23: 0x1bba5c <ast::RunVisitorT<ast::ExecVisitor>::visitprivate(ast::SeqExp const&)> (/home/steer/scilab-6.0.0-beta-1/lib/scilab/libsciast.so.6)
24: 0x1d87bc <StaticRunner::launch()> (/home/steer/scilab-6.0.0-beta-1/lib/scilab/libscilab-cli.so.0)
25: 0x1d0cd2 <RunScilabEngine> (/home/steer/scilab-6.0.0-beta-1/lib/scilab/libscilab-cli.so.0)
26: 0x1e7a <main> (scilab-bin)
27: 0x21b05 <__libc_start_main> (/lib64/libc.so.6)
28: 0x23c1 < > (scilab-bin)
Fin de la pile
HOW TO REPRODUCE THE BUG:
-------------------------
clf;
ax=gca();
ax.data_bounds=[0.1 0;100 1];
ax.axes_visible="on";
ax.log_flags="lnn";
xpoly([0;0],[0;1]) //Crash
xpoly([-1;0],[0;1]) //Crash also
OTHER INFORMATION:
------------------
Of course log(0) -> Inf and log of a negative value is a complex number so the instruction is invalid,
the situation must be detected and an error message thrown or at least the values <=0 must be ommited