bugGNU Octave - Bugs: bug #37308, JIT build fails some numerical...

 
 

bug #37308: JIT build fails some numerical tests; non-JIT build is OK.

Submitter:  Arun Giridhar <arungiridhar>
Submitted:  Mon 10 Sep 2012 03:25:51 AM UTC
   
 
Category:  Interpreter Severity:  3 - Normal
Priority:  5 - Normal Item Group:  Incorrect Result
Status:  Fixed Assigned to:  None
Originator Name:  Open/Closed:  * Closed
Release:  * dev Operating System:  * GNU/Linux
Fixed Release:  None Planned Release:  None
* Mandatory Fields

Add a New Comment Rich Markup
   

Jump to the original submission

Sat 15 Sep 2012 04:17:53 PM UTC, comment #24: 

confirmed also on cygwin

octave-cli:4> id((1+i))-(1+i)
ans = 0

all test passed (except usual cygwin ones)

marco atzeri <matzeri>
Fri 14 Sep 2012 11:36:41 PM UTC, comment #23: 

(Build went faster than I thought)

"make check" now passes all tests save 1 (file-io, fr_FR).

Philip Nienhuis <philipnienhuis>
Group Member
Fri 14 Sep 2012 09:44:02 PM UTC, comment #22: 

Thanks, started a new build with tip. Tomorrow morning we'll see.

Philip Nienhuis <philipnienhuis>
Group Member
Fri 14 Sep 2012 09:22:04 PM UTC, comment #21: 

make check completed correctly.

Looks good.  Will be doing more testing.

Michael Godfrey <godfrey>
Group Member
Fri 14 Sep 2012 12:33:56 PM UTC, comment #20: 

Just started build, but will be out today.  More when I get back.

Thanks,
Michael

Michael Godfrey <godfrey>
Group Member
Fri 14 Sep 2012 12:21:13 PM UTC, comment #19: 

Philip and Michael,

I found a bug where I was not cleaning up properly if JIT failed. This caused the module to be in an illegal state.

Does 8ccb187b24e9 fix the issue for you guys?

http://hg.savannah.gnu.org/hgweb/octave/rev/8ccb187b24e9

Max Brister <fisheater>
Fri 14 Sep 2012 10:52:37 AM UTC, comment #18: 

This still fails for me with yesterday night's tip:


[philip@jvc741 oct-3.7]$ make check
Makefile:2648: warning: overriding recipe for target `check'
:
<snip>
:
make[3]: Leaving directory `/home/philip/devel/oct-3.7/doc/interpreter'

Octave successfully built.  Now choose from the following:

   ./run-octave    - to run in place to test before installing
   make check      - to run the tests
   make install    - to install (PREFIX=/usr/local)

make[2]: Leaving directory `/home/philip/devel/oct-3.7'
make[1]: Leaving directory `/home/philip/devel/oct-3.7'
make -C test check
make[1]: Entering directory `/home/philip/devel/oct-3.7/test'
../../octave/test/build_sparse_tests.sh
../../octave/test/build_bc_overload_tests.sh ../../octave/test/bc_overloads_expected
../run-octave --norc --silent --no-history ../../octave/test/fntests.m ../../octave/test

Integrated test scripts:

  libinterp/corefcn/__contourc__.cc ...................... PASS    1/1
  libinterp/corefcn/__dispatch__.cc ...................... PASS    1/1
  libinterp/corefcn/__lin_interpn__.cc ................... PASS    1/1
  libinterp/corefcn/__pchip_deriv__.cc ................... PASS    1/1
  libinterp/corefcn/__qp__.cc ............................ PASS    1/1
  libinterp/corefcn/besselj.cc ........................... PASS  191/191
  libinterp/corefcn/betainc.cc ........................... PASS   23/23
  libinterp/corefcn/bsxfun.cc ............................ PASS   73/73
  libinterp/corefcn/cellfun.cc ...........................Stack dump:
0.      Running pass 'CallGraph Pass Manager' on module 'octave'.
panic: Segmentation fault -- stopping myself...
make[1]: *** [check] Segmentation fault
make[1]: Leaving directory `/home/philip/devel/oct-3.7/test'
make: *** [check] Error 2
[philip@jvc741 oct-3.7]$ cd ../octave
[philip@jvc741 octave]$ hg summary
parent: 15384:d8d7596fc68d tip
 build: Don't directly compile #included template code Sparse.cc, MSparse.cc
branch: default
commit: (clean)
update: (current)
[philip@jvc741 octave]$


FYI:
Mageia 2 Linux, Pentium-M (w SSE2, no SSE3), gcc 4.6.3, llvm 3.0

W/o JIT all tests pass except file-io.cc (fr_FR localization)

Philip Nienhuis <philipnienhuis>
Group Member
Thu 13 Sep 2012 09:54:27 PM UTC, comment #17: 

I confirm that the output of "make check" is now identical between the JIT and the non-JIT version on 32bit Ubuntu. Much thanks to Max Brister for isolating and fixing the bug!

Arun Giridhar <arungiridhar>
Group Member
Thu 13 Sep 2012 04:14:12 AM UTC, comment #16: 

I think I have fixed Arun's issue [1]. I was using stacksave/stackrestore to handle the allocation of memory for sret functions. It looks like LLVM's optimization pass was using memory I had deallocated using stackrestore. My patch just allocates all memory when the function starts, which is the correct way of doing things anyways.

Additionally, I'm able to reproduce Michael's issue now, so I should be able to fix it.

[1] http://hg.savannah.gnu.org/hgweb/octave/rev/8355fddce815

Max Brister <fisheater>
Tue 11 Sep 2012 06:24:57 AM UTC, comment #15: 

Arun,

I was able to reproduce your issue on my x86 machine, so I should be able to fix the problem. Hopefully this is also related to Michael's issue.

Max Brister <fisheater>
Mon 10 Sep 2012 11:47:34 PM UTC, comment #14: 

Valgrind command used:

driver="valgrind --smc-check=all --tool=memcheck
--track-origins=yes --fullpath-after=/octave/"
make check >valgrind.smc.detailed.out 2>&1


Output attached.

As an addendum to my previous comment, I'm running 32-bit Ubuntu Precise on an x86_64 processor, and the default kernel is the PAE kernel, which allows access beyond the 3.2GB limit.

(file #26527)

Arun Giridhar <arungiridhar>
Group Member
Mon 10 Sep 2012 10:10:42 PM UTC, comment #13: 

Michael,

I just pushed a patch[1] which prevents having to configure with --enable-jit-debug. It should be enough to run 'enable_jit_debug (1)'.

[1] http://hg.savannah.gnu.org/hgweb/octave/rev/6bdf379592d9

Max Brister <fisheater>
Mon 10 Sep 2012 08:06:42 PM UTC, comment #12: 

I ran valgrind last night without --smc-check=all, as I had used the syntax in Bug #37205. I am rerunning it now with --smc-check=all. Since the valgrind manual says the earlier results may not be reliable I'm not posting them here.

I'm on 32-bit Ubuntu running on Intel Core i5. The output of "uname -a" is:

Linux myname-laptop 3.2.0-30-generic-pae #48-Ubuntu SMP
Fri Aug 24 17:14:09 UTC 2012 i686 i686 i386 GNU/Linux


Arun Giridhar <arungiridhar>
Group Member
Mon 10 Sep 2012 06:19:54 PM UTC, comment #11: 

A clarification: the Atom D525 is a x86_64 family
processor, and my system is x86_64.

I have no 32-bit systems available to me now.

I will try a build on an older x86_64 system...

Michael Godfrey <godfrey>
Group Member
Mon 10 Sep 2012 05:03:32 PM UTC, comment #10: 

Ok, maybe this has something to do with 32 bit processors then? I'll try building on my 32 bit machine, it will take a while though.

What I meant by compiling with jit debug is:

./configure <regular flags> --enable-jit-debug
make
./run-octave
octave> enable_jit_debug (1);
octave> test cellfun


This might also work, but octave's option setting is buggy for me right now.


./configure <regular flags> --enable-jit-debug
make
./run-octave --jit-debug
octave> test cellfun
-varbatim-

Max Brister <fisheater>
Mon 10 Sep 2012 02:31:42 PM UTC, comment #9: 

I should have added that the processor in my system
is an Atom D525.

Michael Godfrey <godfrey>
Group Member
Mon 10 Sep 2012 01:12:51 PM UTC, comment #8: 

on cygwin (32 bit architeture) I notice:

octave:3> id = @(x) x
id =

@(x) x


octave:9> id((1+i))-(1+i)
ans =  4.7764e-07 + 9.4593e-07i
octave:10> eps
ans =  2.2204e-16


it seems a float vs double comparison

marco atzeri <matzeri>
Mon 10 Sep 2012 12:04:21 PM UTC, comment #7: 

Since you said that valgrind was not reporting errors
I just tried that and got the error shown in the attaced file.

I did not understand all the details of setting --enable-jit-debug
with make check.  Did you really mean set --jit-debug as
an argument to octave within the make check script?

Anyhow, valgrind defintely found an eror on my system which
is: fedora 17 x86_64


(file #26519)

Michael Godfrey <godfrey>
Group Member
Mon 10 Sep 2012 07:13:52 AM UTC, comment #6: 

Arun,

When using valgrind, you need to add --smc-check=all when jit is enabled[1].

Also, are you on a 32 or 64 bit architecture?

[1] http://valgrind.org/docs/manual/faq.html#faq.java

Michael,

Can you configure with --enable-jit-debug then call 'enable_jit_debug (1)' before running test cellfun? It looks like the LLVM IR is illegal for some reason.

I'm not quite sure what is happening here, as valgrind isn't reporting any errors for me.

Max Brister <fisheater>
Mon 10 Sep 2012 05:49:55 AM UTC, comment #5: 

Apparently the second half of my comment# 4 got eaten, so here it is:

Valgrind result for rand.cc:


  libinterp/corefcn/rand.cc ..............................==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x637D42A: ignpoi_ (in $OCTAVESRCDIR/octave/build/liboctave/.libs/liboctave.so.1.0.1)
==11732==    by 0x63E53A3: octave_rand::do_nd_array(dim_vector const&, double) (oct-rand.cc:550)
==11732==    by 0x4E67BD6: octave_rand::nd_array(dim_vector const&, double) (oct-rand.h:161)
==11732==    by 0x4E66426: do_rand(octave_value_list const&, int, char const*, std::string const&, bool) (rand.cc:345)
==11732==    by 0x4E66D84: Frandp(octave_value_list const&, int) (rand.cc:1008)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==    by 0x494EC84: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-builtin.cc:47)
==11732==    by 0x494FA47: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) (ov-builtin.h:62)
==11732==    by 0x49E874D: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov.cc:1240)
==11732==    by 0x49E884B: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov.cc:1253)
==11732==    by 0x4A4C8F9: tree_index_expression::rvalue(int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (pt-idx.cc:414)
==11732==
 PASS   57/57


This may account for the observed crash in cellfun.cc:

  libinterp/corefcn/cellfun.cc ...........................==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x4EE4188: llvm::X86TargetLowering::LowerCall(llvm::TargetLowering::CallLoweringInfo&, llvm::SmallVectorImpl<llvm::SDValue>&) const (in $OCTAVESRCDIR/octave/build/libinterp/.libs/liboctinterp.so.1.0.1)
==11732==
 PASS  122/122


I will update when valgrind is done.

Arun Giridhar <arungiridhar>
Group Member
Mon 10 Sep 2012 05:47:11 AM UTC, comment #4: 

Good call on the uninitialized memory. The valgrind check is still running with CXXFLAGS="-g", but here are some partial results:

Configure options used for building:

../configure --enable-jit CC="gcc" CXX="g++"
    CXXFLAGS="-g"
    LLVM_CONFIG=`which llvm-config`


Command used for valgrind:

driver="valgrind --tool=memcheck" make check


Valgrind result for pt-jit.cc:

  libinterp/interp-core/pt-jit.cc ........................==11732== Invalid read of size 8
==11732==    at 0xE74A55A: ???
==11732==    by 0x4B94763: jit_info::execute(std::map<std::string, octave_value const*, std::less<std::string>, std::allocator<std::pair<std::string const, octave_value const*> > > const&) const (pt-jit.cc:2070)
==11732==    by 0x4B93706: tree_jit::do_execute(tree_simple_for_command&, octave_value const&) (pt-jit.cc:1810)
==11732==    by 0x4B93174: tree_jit::execute(tree_simple_for_command&, octave_value const&) (pt-jit.cc:1727)
==11732==    by 0x4A4562D: tree_evaluator::visit_simple_for_command(tree_simple_for_command&) (pt-eval.cc:310)
==11732==    by 0x4A4FA30: tree_simple_for_command::accept(tree_walker&) (pt-loop.cc:125)
==11732==    by 0x4A469A5: tree_evaluator::visit_statement(tree_statement&) (pt-eval.cc:714)
==11732==    by 0x4A65B0A: tree_statement::accept(tree_walker&) (pt-stmt.cc:151)
==11732==    by 0x4A46D02: tree_evaluator::visit_statement_list(tree_statement_list&) (pt-eval.cc:793)
==11732==    by 0x4A65E50: tree_statement_list::accept(tree_walker&) (pt-stmt.cc:215)
==11732==    by 0x49DF729: octave_user_function::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-usr-fcn.cc:484)
==11732==    by 0x49DF159: octave_user_function::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-usr-fcn.cc:337)
==11732==  Address 0xbee3c470 is just below the stack ptr.  To suppress, use: --workaround-gcc296-bugs=yes
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x4B5DD90: octave_jit_cast_any_complex (jit-typeinfo.cc:185)
==11732==    by 0xE74B74E: ???
==11732==    by 0x4B939A2: tree_jit::do_execute(octave_user_function&, octave_value_list const&, octave_value_list&) (pt-jit.cc:1845)
==11732==    by 0x4B931DB: tree_jit::execute(octave_user_function&, octave_value_list const&, octave_value_list&) (pt-jit.cc:1740)
==11732==    by 0x49DF386: octave_user_function::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-usr-fcn.cc:385)
==11732==    by 0x49E8CBE: octave_value::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov.cc:1314)
==11732==    by 0x498912F: octave_fcn_handle::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-fcn-handle.cc:219)
==11732==    by 0x4988B11: octave_fcn_handle::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-fcn-handle.cc:110)
==11732==    by 0x4988A3C: octave_fcn_handle::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-fcn-handle.cc:93)
==11732==    by 0x4991705: octave_fcn_handle::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) (ov-fcn-handle.h:78)
==11732==    by 0x49E874D: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov.cc:1240)
==11732==    by 0x49E884B: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov.cc:1253)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x49808AE: octave_complex_matrix::try_narrowing_conversion() (ov-cx-mat.cc:90)
==11732==    by 0x49E8619: octave_value::maybe_mutate() (ov.cc:1213)
==11732==    by 0x49E6391: octave_value::octave_value(ComplexNDArray const&) (ov.cc:735)
==11732==    by 0x4984B5C: octave_base_matrix<ComplexNDArray>::do_index_op(octave_value_list const&, bool) (ov-base-mat.cc:157)
==11732==    by 0x494C076: octave_value::do_index_op(octave_value_list const&, bool) (ov.h:424)
==11732==    by 0x4971FBF: octave_complex::do_index_op(octave_value_list const&, bool) (ov-complex.cc:101)
==11732==    by 0x49745D3: octave_base_scalar<std::complex<double> >::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) (ov-base-scalar.cc:46)
==11732==    by 0x49E874D: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov.cc:1240)
==11732==    by 0x49E884B: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov.cc:1253)
==11732==    by 0x4A4C8F9: tree_index_expression::rvalue(int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (pt-idx.cc:414)
==11732==    by 0x4A4C0E4: tree_index_expression::rvalue(int) (pt-idx.cc:284)
==11732==    by 0x4A4CAFF: tree_index_expression::rvalue1(int) (pt-idx.cc:425)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x65DCD83: __lo_ieee_is_NA (lo-cieee.c:110)
==11732==    by 0x63B3AA5: octave_is_NA(std::complex<double> const&) (lo-mappers.cc:239)
==11732==    by 0x497353B: octave_complex::map(octave_base_value::unary_mapper_t) const (ov-complex.cc:458)
==11732==    by 0x4E48060: octave_value::isna() const (ov.h:1133)
==11732==    by 0x4E46800: Fisna(octave_value_list const&, int) (mappers.cc:1268)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==    by 0x494EC84: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-builtin.cc:47)
==11732==    by 0x494FA47: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) (ov-builtin.h:62)
==11732==    by 0x49E874D: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov.cc:1240)
==11732==    by 0x49E884B: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov.cc:1253)
==11732==    by 0x4A4C8F9: tree_index_expression::rvalue(int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (pt-idx.cc:414)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x462BD95: bool xisnan<double>(std::complex<double> const&) (lo-mappers.h:249)
==11732==    by 0x497355D: octave_complex::map(octave_base_value::unary_mapper_t) const (ov-complex.cc:459)
==11732==    by 0x4E4809A: octave_value::isnan() const (ov.h:1134)
==11732==    by 0x4E468CD: Fisnan(octave_value_list const&, int) (mappers.cc:1310)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==    by 0x494EC84: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-builtin.cc:47)
==11732==    by 0x494FA47: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) (ov-builtin.h:62)
==11732==    by 0x49E874D: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov.cc:1240)
==11732==    by 0x49E884B: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov.cc:1253)
==11732==    by 0x4A4C8F9: tree_index_expression::rvalue(int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (pt-idx.cc:414)
==11732==    by 0x4A4C0E4: tree_index_expression::rvalue(int) (pt-idx.cc:284)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x4975A54: bool xisinf<double>(std::complex<double> const&) (lo-mappers.h:263)
==11732==    by 0x4973519: octave_complex::map(octave_base_value::unary_mapper_t) const (ov-complex.cc:457)
==11732==    by 0x4E48026: octave_value::isinf() const (ov.h:1132)
==11732==    by 0x4E46599: Fisinf(octave_value_list const&, int) (mappers.cc:1169)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==    by 0x494EC84: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-builtin.cc:47)
==11732==    by 0x494FA47: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) (ov-builtin.h:62)
==11732==    by 0x49E874D: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov.cc:1240)
==11732==    by 0x49E884B: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov.cc:1253)
==11732==    by 0x4A4C8F9: tree_index_expression::rvalue(int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (pt-idx.cc:414)
==11732==    by 0x4A4C0E4: tree_index_expression::rvalue(int) (pt-idx.cc:284)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x49759FE: bool xfinite<double>(std::complex<double> const&) (lo-mappers.h:256)
==11732==    by 0x49734F4: octave_complex::map(octave_base_value::unary_mapper_t) const (ov-complex.cc:456)
==11732==    by 0x4E47F04: octave_value::finite() const (ov.h:1127)
==11732==    by 0x4E45D97: Fisfinite(octave_value_list const&, int) (mappers.cc:822)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==    by 0x494EC84: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-builtin.cc:47)
==11732==    by 0x494FA47: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) (ov-builtin.h:62)
==11732==    by 0x49E874D: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov.cc:1240)
==11732==    by 0x49E884B: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov.cc:1253)
==11732==    by 0x4A4C8F9: tree_index_expression::rvalue(int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (pt-idx.cc:414)
==11732==    by 0x4A4C0E4: tree_index_expression::rvalue(int) (pt-idx.cc:284)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x4975A54: bool xisinf<double>(std::complex<double> const&) (lo-mappers.h:263)
==11732==    by 0x4D669DD: set_format(std::complex<double> const&, int&, int&) (pr-output.cc:993)
==11732==    by 0x4D66BB9: set_format(std::complex<double> const&) (pr-output.cc:1026)
==11732==    by 0x4D69B78: octave_print_internal(std::ostream&, std::complex<double> const&, bool) (pr-output.cc:2132)
==11732==    by 0x4975242: octave_base_scalar<std::complex<double> >::print_raw(std::ostream&, bool) const (ov-base-scalar.cc:158)
==11732==    by 0x49751E2: octave_base_scalar<std::complex<double> >::print(std::ostream&, bool) const (ov-base-scalar.cc:148)
==11732==    by 0x49B55FE: octave_value::print(std::ostream&, bool) const (ov.h:992)
==11732==    by 0x4D6C9DE: Fdisp(octave_value_list const&, int) (pr-output.cc:3487)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==    by 0x494EC84: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-builtin.cc:47)
==11732==    by 0x494FA47: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) (ov-builtin.h:62)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x462BD95: bool xisnan<double>(std::complex<double> const&) (lo-mappers.h:249)
==11732==    by 0x4D669EC: set_format(std::complex<double> const&, int&, int&) (pr-output.cc:993)
==11732==    by 0x4D66BB9: set_format(std::complex<double> const&) (pr-output.cc:1026)
==11732==    by 0x4D69B78: octave_print_internal(std::ostream&, std::complex<double> const&, bool) (pr-output.cc:2132)
==11732==    by 0x4975242: octave_base_scalar<std::complex<double> >::print_raw(std::ostream&, bool) const (ov-base-scalar.cc:158)
==11732==    by 0x49751E2: octave_base_scalar<std::complex<double> >::print(std::ostream&, bool) const (ov-base-scalar.cc:148)
==11732==    by 0x49B55FE: octave_value::print(std::ostream&, bool) const (ov.h:992)
==11732==    by 0x4D6C9DE: Fdisp(octave_value_list const&, int) (pr-output.cc:3487)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==    by 0x494EC84: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-builtin.cc:47)
==11732==    by 0x494FA47: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) (ov-builtin.h:62)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x4D66A7A: set_format(std::complex<double> const&, int&, int&) (pr-output.cc:998)
==11732==    by 0x4D66BB9: set_format(std::complex<double> const&) (pr-output.cc:1026)
==11732==    by 0x4D69B78: octave_print_internal(std::ostream&, std::complex<double> const&, bool) (pr-output.cc:2132)
==11732==    by 0x4975242: octave_base_scalar<std::complex<double> >::print_raw(std::ostream&, bool) const (ov-base-scalar.cc:158)
==11732==    by 0x49751E2: octave_base_scalar<std::complex<double> >::print(std::ostream&, bool) const (ov-base-scalar.cc:148)
==11732==    by 0x49B55FE: octave_value::print(std::ostream&, bool) const (ov.h:992)
==11732==    by 0x4D6C9DE: Fdisp(octave_value_list const&, int) (pr-output.cc:3487)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==    by 0x494EC84: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-builtin.cc:47)
==11732==    by 0x494FA47: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) (ov-builtin.h:62)
==11732==    by 0x49E874D: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov.cc:1240)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x4D66AF1: set_format(std::complex<double> const&, int&, int&) (pr-output.cc:1004)
==11732==    by 0x4D66BB9: set_format(std::complex<double> const&) (pr-output.cc:1026)
==11732==    by 0x4D69B78: octave_print_internal(std::ostream&, std::complex<double> const&, bool) (pr-output.cc:2132)
==11732==    by 0x4975242: octave_base_scalar<std::complex<double> >::print_raw(std::ostream&, bool) const (ov-base-scalar.cc:158)
==11732==    by 0x49751E2: octave_base_scalar<std::complex<double> >::print(std::ostream&, bool) const (ov-base-scalar.cc:148)
==11732==    by 0x49B55FE: octave_value::print(std::ostream&, bool) const (ov.h:992)
==11732==    by 0x4D6C9DE: Fdisp(octave_value_list const&, int) (pr-output.cc:3487)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==    by 0x494EC84: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-builtin.cc:47)
==11732==    by 0x494FA47: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) (ov-builtin.h:62)
==11732==    by 0x49E874D: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov.cc:1240)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x4D66B03: set_format(std::complex<double> const&, int&, int&) (pr-output.cc:1004)
==11732==    by 0x4D66BB9: set_format(std::complex<double> const&) (pr-output.cc:1026)
==11732==    by 0x4D69B78: octave_print_internal(std::ostream&, std::complex<double> const&, bool) (pr-output.cc:2132)
==11732==    by 0x4975242: octave_base_scalar<std::complex<double> >::print_raw(std::ostream&, bool) const (ov-base-scalar.cc:158)
==11732==    by 0x49751E2: octave_base_scalar<std::complex<double> >::print(std::ostream&, bool) const (ov-base-scalar.cc:148)
==11732==    by 0x49B55FE: octave_value::print(std::ostream&, bool) const (ov.h:992)
==11732==    by 0x4D6C9DE: Fdisp(octave_value_list const&, int) (pr-output.cc:3487)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==    by 0x494EC84: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-builtin.cc:47)
==11732==    by 0x494FA47: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) (ov-builtin.h:62)
==11732==    by 0x49E874D: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov.cc:1240)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x4D66B22: set_format(std::complex<double> const&, int&, int&) (pr-output.cc:1004)
==11732==    by 0x4D66BB9: set_format(std::complex<double> const&) (pr-output.cc:1026)
==11732==    by 0x4D69B78: octave_print_internal(std::ostream&, std::complex<double> const&, bool) (pr-output.cc:2132)
==11732==    by 0x4975242: octave_base_scalar<std::complex<double> >::print_raw(std::ostream&, bool) const (ov-base-scalar.cc:158)
==11732==    by 0x49751E2: octave_base_scalar<std::complex<double> >::print(std::ostream&, bool) const (ov-base-scalar.cc:148)
==11732==    by 0x49B55FE: octave_value::print(std::ostream&, bool) const (ov.h:992)
==11732==    by 0x4D6C9DE: Fdisp(octave_value_list const&, int) (pr-output.cc:3487)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==    by 0x494EC84: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-builtin.cc:47)
==11732==    by 0x494FA47: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) (ov-builtin.h:62)
==11732==    by 0x49E874D: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov.cc:1240)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x699C829: log10 (w_log10.c:29)
==11732==    by 0x4D66B2E: set_format(std::complex<double> const&, int&, int&) (pr-output.cc:1004)
==11732==    by 0x4D66BB9: set_format(std::complex<double> const&) (pr-output.cc:1026)
==11732==    by 0x4D69B78: octave_print_internal(std::ostream&, std::complex<double> const&, bool) (pr-output.cc:2132)
==11732==    by 0x4975242: octave_base_scalar<std::complex<double> >::print_raw(std::ostream&, bool) const (ov-base-scalar.cc:158)
==11732==    by 0x49751E2: octave_base_scalar<std::complex<double> >::print(std::ostream&, bool) const (ov-base-scalar.cc:148)
==11732==    by 0x49B55FE: octave_value::print(std::ostream&, bool) const (ov.h:992)
==11732==    by 0x4D6C9DE: Fdisp(octave_value_list const&, int) (pr-output.cc:3487)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==    by 0x494EC84: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-builtin.cc:47)
==11732==    by 0x494FA47: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) (ov-builtin.h:62)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x699A378: __log10_finite (e_log10.S:44)
==11732==    by 0x4D66B2E: set_format(std::complex<double> const&, int&, int&) (pr-output.cc:1004)
==11732==    by 0x4D66BB9: set_format(std::complex<double> const&) (pr-output.cc:1026)
==11732==    by 0x4D69B78: octave_print_internal(std::ostream&, std::complex<double> const&, bool) (pr-output.cc:2132)
==11732==    by 0x4975242: octave_base_scalar<std::complex<double> >::print_raw(std::ostream&, bool) const (ov-base-scalar.cc:158)
==11732==    by 0x49751E2: octave_base_scalar<std::complex<double> >::print(std::ostream&, bool) const (ov-base-scalar.cc:148)
==11732==    by 0x49B55FE: octave_value::print(std::ostream&, bool) const (ov.h:992)
==11732==    by 0x4D6C9DE: Fdisp(octave_value_list const&, int) (pr-output.cc:3487)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==    by 0x494EC84: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-builtin.cc:47)
==11732==    by 0x494FA47: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) (ov-builtin.h:62)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x699A38F: __log10_finite (e_log10.S:51)
==11732==    by 0x4D66B2E: set_format(std::complex<double> const&, int&, int&) (pr-output.cc:1004)
==11732==    by 0x4D66BB9: set_format(std::complex<double> const&) (pr-output.cc:1026)
==11732==    by 0x4D69B78: octave_print_internal(std::ostream&, std::complex<double> const&, bool) (pr-output.cc:2132)
==11732==    by 0x4975242: octave_base_scalar<std::complex<double> >::print_raw(std::ostream&, bool) const (ov-base-scalar.cc:158)
==11732==    by 0x49751E2: octave_base_scalar<std::complex<double> >::print(std::ostream&, bool) const (ov-base-scalar.cc:148)
==11732==    by 0x49B55FE: octave_value::print(std::ostream&, bool) const (ov.h:992)
==11732==    by 0x4D6C9DE: Fdisp(octave_value_list const&, int) (pr-output.cc:3487)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==    by 0x494EC84: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-builtin.cc:47)
==11732==    by 0x494FA47: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) (ov-builtin.h:62)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x4D66B3F: set_format(std::complex<double> const&, int&, int&) (pr-output.cc:1008)
==11732==    by 0x4D66BB9: set_format(std::complex<double> const&) (pr-output.cc:1026)
==11732==    by 0x4D69B78: octave_print_internal(std::ostream&, std::complex<double> const&, bool) (pr-output.cc:2132)
==11732==    by 0x4975242: octave_base_scalar<std::complex<double> >::print_raw(std::ostream&, bool) const (ov-base-scalar.cc:158)
==11732==    by 0x49751E2: octave_base_scalar<std::complex<double> >::print(std::ostream&, bool) const (ov-base-scalar.cc:148)
==11732==    by 0x49B55FE: octave_value::print(std::ostream&, bool) const (ov.h:992)
==11732==    by 0x4D6C9DE: Fdisp(octave_value_list const&, int) (pr-output.cc:3487)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==    by 0x494EC84: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-builtin.cc:47)
==11732==    by 0x494FA47: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) (ov-builtin.h:62)
==11732==    by 0x49E874D: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov.cc:1240)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x4D663AD: set_complex_format(int, int, int, bool, int, int&, int&) (pr-output.cc:881)
==11732==    by 0x4D66B91: set_format(std::complex<double> const&, int&, int&) (pr-output.cc:1019)
==11732==    by 0x4D66BB9: set_format(std::complex<double> const&) (pr-output.cc:1026)
==11732==    by 0x4D69B78: octave_print_internal(std::ostream&, std::complex<double> const&, bool) (pr-output.cc:2132)
==11732==    by 0x4975242: octave_base_scalar<std::complex<double> >::print_raw(std::ostream&, bool) const (ov-base-scalar.cc:158)
==11732==    by 0x49751E2: octave_base_scalar<std::complex<double> >::print(std::ostream&, bool) const (ov-base-scalar.cc:148)
==11732==    by 0x49B55FE: octave_value::print(std::ostream&, bool) const (ov.h:992)
==11732==    by 0x4D6C9DE: Fdisp(octave_value_list const&, int) (pr-output.cc:3487)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==    by 0x494EC84: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-builtin.cc:47)
==11732==    by 0x494FA47: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) (ov-builtin.h:62)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x4D663BB: set_complex_format(int, int, int, bool, int, int&, int&) (pr-output.cc:884)
==11732==    by 0x4D66B91: set_format(std::complex<double> const&, int&, int&) (pr-output.cc:1019)
==11732==    by 0x4D66BB9: set_format(std::complex<double> const&) (pr-output.cc:1026)
==11732==    by 0x4D69B78: octave_print_internal(std::ostream&, std::complex<double> const&, bool) (pr-output.cc:2132)
==11732==    by 0x4975242: octave_base_scalar<std::complex<double> >::print_raw(std::ostream&, bool) const (ov-base-scalar.cc:158)
==11732==    by 0x49751E2: octave_base_scalar<std::complex<double> >::print(std::ostream&, bool) const (ov-base-scalar.cc:148)
==11732==    by 0x49B55FE: octave_value::print(std::ostream&, bool) const (ov.h:992)
==11732==    by 0x4D6C9DE: Fdisp(octave_value_list const&, int) (pr-output.cc:3487)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==    by 0x494EC84: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-builtin.cc:47)
==11732==    by 0x494FA47: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) (ov-builtin.h:62)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x4D66467: set_complex_format(int, int, int, bool, int, int&, int&) (pr-output.cc:908)
==11732==    by 0x4D66B91: set_format(std::complex<double> const&, int&, int&) (pr-output.cc:1019)
==11732==    by 0x4D66BB9: set_format(std::complex<double> const&) (pr-output.cc:1026)
==11732==    by 0x4D69B78: octave_print_internal(std::ostream&, std::complex<double> const&, bool) (pr-output.cc:2132)
==11732==    by 0x4975242: octave_base_scalar<std::complex<double> >::print_raw(std::ostream&, bool) const (ov-base-scalar.cc:158)
==11732==    by 0x49751E2: octave_base_scalar<std::complex<double> >::print(std::ostream&, bool) const (ov-base-scalar.cc:148)
==11732==    by 0x49B55FE: octave_value::print(std::ostream&, bool) const (ov.h:992)
==11732==    by 0x4D6C9DE: Fdisp(octave_value_list const&, int) (pr-output.cc:3487)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==    by 0x494EC84: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-builtin.cc:47)
==11732==    by 0x494FA47: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) (ov-builtin.h:62)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x4D6647A: set_complex_format(int, int, int, bool, int, int&, int&) (pr-output.cc:909)
==11732==    by 0x4D66B91: set_format(std::complex<double> const&, int&, int&) (pr-output.cc:1019)
==11732==    by 0x4D66BB9: set_format(std::complex<double> const&) (pr-output.cc:1026)
==11732==    by 0x4D69B78: octave_print_internal(std::ostream&, std::complex<double> const&, bool) (pr-output.cc:2132)
==11732==    by 0x4975242: octave_base_scalar<std::complex<double> >::print_raw(std::ostream&, bool) const (ov-base-scalar.cc:158)
==11732==    by 0x49751E2: octave_base_scalar<std::complex<double> >::print(std::ostream&, bool) const (ov-base-scalar.cc:148)
==11732==    by 0x49B55FE: octave_value::print(std::ostream&, bool) const (ov.h:992)
==11732==    by 0x4D6C9DE: Fdisp(octave_value_list const&, int) (pr-output.cc:3487)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==    by 0x494EC84: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-builtin.cc:47)
==11732==    by 0x494FA47: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) (ov-builtin.h:62)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x4D6879F: pr_complex(std::ostream&, std::complex<double> const&, int, int, double) (pr-output.cc:1594)
==11732==    by 0x4D69BBF: octave_print_internal(std::ostream&, std::complex<double> const&, bool) (pr-output.cc:2136)
==11732==    by 0x4975242: octave_base_scalar<std::complex<double> >::print_raw(std::ostream&, bool) const (ov-base-scalar.cc:158)
==11732==    by 0x49751E2: octave_base_scalar<std::complex<double> >::print(std::ostream&, bool) const (ov-base-scalar.cc:148)
==11732==    by 0x49B55FE: octave_value::print(std::ostream&, bool) const (ov.h:992)
==11732==    by 0x4D6C9DE: Fdisp(octave_value_list const&, int) (pr-output.cc:3487)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==    by 0x494EC84: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-builtin.cc:47)
==11732==    by 0x494FA47: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) (ov-builtin.h:62)
==11732==    by 0x49E874D: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov.cc:1240)
==11732==    by 0x49E884B: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov.cc:1253)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x65DCD83: __lo_ieee_is_NA (lo-cieee.c:110)
==11732==    by 0x4D68376: pr_any_float(float_format const*, std::ostream&, double, int) (pr-output.cc:1527)
==11732==    by 0x4D686AE: pr_imag_float(std::ostream&, double, int) (pr-output.cc:1577)
==11732==    by 0x4D68841: pr_complex(std::ostream&, std::complex<double> const&, int, int, double) (pr-output.cc:1607)
==11732==    by 0x4D69BBF: octave_print_internal(std::ostream&, std::complex<double> const&, bool) (pr-output.cc:2136)
==11732==    by 0x4975242: octave_base_scalar<std::complex<double> >::print_raw(std::ostream&, bool) const (ov-base-scalar.cc:158)
==11732==    by 0x49751E2: octave_base_scalar<std::complex<double> >::print(std::ostream&, bool) const (ov-base-scalar.cc:148)
==11732==    by 0x49B55FE: octave_value::print(std::ostream&, bool) const (ov.h:992)
==11732==    by 0x4D6C9DE: Fdisp(octave_value_list const&, int) (pr-output.cc:3487)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==    by 0x494EC84: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-builtin.cc:47)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x4D68439: pr_any_float(float_format const*, std::ostream&, double, int) (pr-output.cc:1536)
==11732==    by 0x4D686AE: pr_imag_float(std::ostream&, double, int) (pr-output.cc:1577)
==11732==    by 0x4D68841: pr_complex(std::ostream&, std::complex<double> const&, int, int, double) (pr-output.cc:1607)
==11732==    by 0x4D69BBF: octave_print_internal(std::ostream&, std::complex<double> const&, bool) (pr-output.cc:2136)
==11732==    by 0x4975242: octave_base_scalar<std::complex<double> >::print_raw(std::ostream&, bool) const (ov-base-scalar.cc:158)
==11732==    by 0x49751E2: octave_base_scalar<std::complex<double> >::print(std::ostream&, bool) const (ov-base-scalar.cc:148)
==11732==    by 0x49B55FE: octave_value::print(std::ostream&, bool) const (ov.h:992)
==11732==    by 0x4D6C9DE: Fdisp(octave_value_list const&, int) (pr-output.cc:3487)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==    by 0x494EC84: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-builtin.cc:47)
==11732==    by 0x494FA47: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) (ov-builtin.h:62)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x4D684D6: pr_any_float(float_format const*, std::ostream&, double, int) (pr-output.cc:1549)
==11732==    by 0x4D686AE: pr_imag_float(std::ostream&, double, int) (pr-output.cc:1577)
==11732==    by 0x4D68841: pr_complex(std::ostream&, std::complex<double> const&, int, int, double) (pr-output.cc:1607)
==11732==    by 0x4D69BBF: octave_print_internal(std::ostream&, std::complex<double> const&, bool) (pr-output.cc:2136)
==11732==    by 0x4975242: octave_base_scalar<std::complex<double> >::print_raw(std::ostream&, bool) const (ov-base-scalar.cc:158)
==11732==    by 0x49751E2: octave_base_scalar<std::complex<double> >::print(std::ostream&, bool) const (ov-base-scalar.cc:148)
==11732==    by 0x49B55FE: octave_value::print(std::ostream&, bool) const (ov.h:992)
==11732==    by 0x4D6C9DE: Fdisp(octave_value_list const&, int) (pr-output.cc:3487)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==    by 0x494EC84: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-builtin.cc:47)
==11732==    by 0x494FA47: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) (ov-builtin.h:62)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x6A1E340: __printf_fp (printf_fp.c:406)
==11732==    by 0x6A1AAFC: vfprintf (vfprintf.c:1986)
==11732==    by 0x6A401CA: vsnprintf (vsnprintf.c:120)
==11732==    by 0xBEE3B4CF: ???
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x6A1EEE5: __printf_fp (printf_fp.c:970)
==11732==    by 0x6A1AAFC: vfprintf (vfprintf.c:1986)
==11732==    by 0x6A401CA: vsnprintf (vsnprintf.c:120)
==11732==    by 0xBEE3B4CF: ???
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x6A1EF34: __printf_fp (printf_fp.c:982)
==11732==    by 0x6A1AAFC: vfprintf (vfprintf.c:1986)
==11732==    by 0x6A401CA: vsnprintf (vsnprintf.c:120)
==11732==    by 0xBEE3B4CF: ???
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x6A1F350: __printf_fp (printf_fp.c:1234)
==11732==    by 0x6A1AAFC: vfprintf (vfprintf.c:1986)
==11732==    by 0x6A401CA: vsnprintf (vsnprintf.c:120)
==11732==    by 0xBEE3B4CF: ???
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x6A1F336: __printf_fp (printf_fp.c:1236)
==11732==    by 0x6A1AAFC: vfprintf (vfprintf.c:1986)
==11732==    by 0x6A401CA: vsnprintf (vsnprintf.c:120)
==11732==    by 0xBEE3B4CF: ???
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x5F582A7: Array<bool>::nnz() const (Array.cc:2157)
==11732==    by 0x623BF6F: idx_vector::idx_vector(Array<bool> const&) (idx-vector.cc:787)
==11732==    by 0x49443DC: octave_bool_matrix::index_vector() const (in $OCTAVESRCDIR/octave/build/libinterp/.libs/liboctinterp.so.1.0.1)
==11732==    by 0x4944064: octave_value::index_vector() const (ov.h:448)
==11732==    by 0x4E14D2B: Ffind(octave_value_list const&, int) (find.cc:462)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==    by 0x494EC84: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-builtin.cc:47)
==11732==    by 0x494FA47: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) (ov-builtin.h:62)
==11732==    by 0x49E874D: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov.cc:1240)
==11732==    by 0x49E884B: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov.cc:1253)
==11732==    by 0x4A4C8F9: tree_index_expression::rvalue(int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (pt-idx.cc:414)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x623DB6D: idx_vector::unmask() const (idx-vector.cc:1216)
==11732==    by 0x4E14D40: Ffind(octave_value_list const&, int) (find.cc:462)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==    by 0x494EC84: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-builtin.cc:47)
==11732==    by 0x494FA47: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) (ov-builtin.h:62)
==11732==    by 0x49E874D: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov.cc:1240)
==11732==    by 0x49E884B: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov.cc:1253)
==11732==    by 0x4A4C8F9: tree_index_expression::rvalue(int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (pt-idx.cc:414)
==11732==    by 0x4A4C0E4: tree_index_expression::rvalue(int) (pt-idx.cc:284)
==11732==    by 0x4A4CAFF: tree_index_expression::rvalue1(int) (pt-idx.cc:425)
==11732==    by 0x4A3BA9D: tree_simple_assignment::rvalue1(int) (pt-assign.cc:210)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x6A1C17A: vfprintf (vfprintf.c:1987)
==11732==    by 0x6A3FDE8: vasprintf (vasprintf.c:64)
==11732==    by 0x4D9A5CA: octave_vformat(std::ostream&, char const*, char*) (utils.cc:1218)
==11732==    by 0x4D9A592: octave_format(std::ostream&, char const*, ...) (utils.cc:1208)
==11732==    by 0x4AFA6F0: int do_printf_conv<char const*>(std::ostream&, char const*, int, int, int, char const*, std::string const&) (oct-stream.cc:2394)
==11732==    by 0x4AF1CDA: octave_base_stream::do_printf(printf_format_list&, octave_value_list const&, std::string const&) (oct-stream.cc:2522)
==11732==    by 0x4AF26CB: octave_base_stream::printf(std::string const&, octave_value_list const&, std::string const&) (oct-stream.cc:2625)
==11732==    by 0x4AF4A15: octave_stream::printf(std::string const&, octave_value_list const&, std::string const&) (oct-stream.cc:3759)
==11732==    by 0x4AF4ACC: octave_stream::printf(octave_value const&, octave_value_list const&, std::string const&) (oct-stream.cc:3777)
==11732==    by 0x4C07BD2: Fsprintf(octave_value_list const&, int) (file-io.cc:1070)
==11732==    by 0x4BFDB44: handle_message(void (*)(char const*, char const*, ...), char const*, char const*, octave_value_list const&, bool) (error.cc:781)
==11732==    by 0x4BFF347: Ferror(octave_value_list const&, int) (error.cc:1138)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x402D667: strlen (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==11732==    by 0x693BEF1: std::string::operator=(char const*) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==11732==    by 0x4D9A5CA: octave_vformat(std::ostream&, char const*, char*) (utils.cc:1218)
==11732==    by 0x4D9A592: octave_format(std::ostream&, char const*, ...) (utils.cc:1208)
==11732==    by 0x4AFA6F0: int do_printf_conv<char const*>(std::ostream&, char const*, int, int, int, char const*, std::string const&) (oct-stream.cc:2394)
==11732==    by 0x4AF1CDA: octave_base_stream::do_printf(printf_format_list&, octave_value_list const&, std::string const&) (oct-stream.cc:2522)
==11732==    by 0x4AF26CB: octave_base_stream::printf(std::string const&, octave_value_list const&, std::string const&) (oct-stream.cc:2625)
==11732==    by 0x4AF4A15: octave_stream::printf(std::string const&, octave_value_list const&, std::string const&) (oct-stream.cc:3759)
==11732==    by 0x4AF4ACC: octave_stream::printf(octave_value const&, octave_value_list const&, std::string const&) (oct-stream.cc:3777)
==11732==    by 0x4C07BD2: Fsprintf(octave_value_list const&, int) (file-io.cc:1070)
==11732==    by 0x4BFDB44: handle_message(void (*)(char const*, char const*, ...), char const*, char const*, octave_value_list const&, bool) (error.cc:781)
==11732==    by 0x4BFF347: Ferror(octave_value_list const&, int) (error.cc:1138)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x402D667: strlen (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==11732==    by 0x4BFDC45: handle_message(void (*)(char const*, char const*, ...), char const*, char const*, octave_value_list const&, bool) (error.cc:804)
==11732==    by 0x4BFF347: Ferror(octave_value_list const&, int) (error.cc:1138)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==    by 0x494EC84: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-builtin.cc:47)
==11732==    by 0x49E87A3: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov.cc:1242)
==11732==    by 0x49E884B: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov.cc:1253)
==11732==    by 0x4A4C8F9: tree_index_expression::rvalue(int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (pt-idx.cc:414)
==11732==    by 0x4A4C0E4: tree_index_expression::rvalue(int) (pt-idx.cc:284)
==11732==    by 0x4A4CAFF: tree_index_expression::rvalue1(int) (pt-idx.cc:425)
==11732==    by 0x4A46AB5: tree_evaluator::visit_statement(tree_statement&) (pt-eval.cc:744)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x6A1C17A: vfprintf (vfprintf.c:1987)
==11732==    by 0x6A3FDE8: vasprintf (vasprintf.c:64)
==11732==    by 0x4D9A5CA: octave_vformat(std::ostream&, char const*, char*) (utils.cc:1218)
==11732==    by 0x4BFC14D: verror(bool, std::ostream&, char const*, char const*, char const*, char*, bool) (error.cc:206)
==11732==    by 0x4BFC65D: error_1(std::ostream&, char const*, char const*, char const*, char*, bool) (error.cc:302)
==11732==    by 0x4BFCE85: error_2(char const*, char const*, char*, bool) (error.cc:458)
==11732==    by 0x4BFD08D: verror_with_id(char const*, char const*, char*) (error.cc:509)
==11732==    by 0x4BFD0C2: error_with_id(char const*, char const*, ...) (error.cc:517)
==11732==    by 0x4BFDCE3: handle_message(void (*)(char const*, char const*, ...), char const*, char const*, octave_value_list const&, bool) (error.cc:821)
==11732==    by 0x4BFF347: Ferror(octave_value_list const&, int) (error.cc:1138)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x402D667: strlen (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==11732==    by 0x693BEF1: std::string::operator=(char const*) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==11732==    by 0x4D9A5CA: octave_vformat(std::ostream&, char const*, char*) (utils.cc:1218)
==11732==    by 0x4BFC14D: verror(bool, std::ostream&, char const*, char const*, char const*, char*, bool) (error.cc:206)
==11732==    by 0x4BFC65D: error_1(std::ostream&, char const*, char const*, char const*, char*, bool) (error.cc:302)
==11732==    by 0x4BFCE85: error_2(char const*, char const*, char*, bool) (error.cc:458)
==11732==    by 0x4BFD08D: verror_with_id(char const*, char const*, char*) (error.cc:509)
==11732==    by 0x4BFD0C2: error_with_id(char const*, char const*, ...) (error.cc:517)
==11732==    by 0x4BFDCE3: handle_message(void (*)(char const*, char const*, ...), char const*, char const*, octave_value_list const&, bool) (error.cc:821)
==11732==    by 0x4BFF347: Ferror(octave_value_list const&, int) (error.cc:1138)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==
==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x402D667: strlen (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==11732==    by 0x693BEF1: std::string::operator=(char const*) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==11732==    by 0x4BFF347: Ferror(octave_value_list const&, int) (error.cc:1138)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==    by 0x494EC84: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-builtin.cc:47)
==11732==    by 0x49E87A3: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov.cc:1242)
==11732==    by 0x49E884B: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov.cc:1253)
==11732==    by 0x4A4C8F9: tree_index_expression::rvalue(int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (pt-idx.cc:414)
==11732==    by 0x4A4C0E4: tree_index_expression::rvalue(int) (pt-idx.cc:284)
==11732==    by 0x4A4CAFF: tree_index_expression::rvalue1(int) (pt-idx.cc:425)
==11732==    by 0x4A46AB5: tree_evaluator::visit_statement(tree_statement&) (pt-eval.cc:744)
==11732==
==11732== Syscall param write(buf) points to uninitialised byte(s)
==11732==    at 0x6AB21D3: __write_nocancel (syscall-template.S:82)
==11732==    by 0x6A46B04: _IO_file_write@@GLIBC_2.1 (fileops.c:1289)
==11732==    by 0x6A469E3: new_do_write (fileops.c:543)
==11732==    by 0x4A952AC: c_file_ptr_buf::sync() (c-file-ptr-stream.cc:168)
==11732==    by 0x692EB4E: std::ostream::flush() (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==11732==    by 0x4AF4BAA: octave_stream::puts(std::string const&, std::string const&) (oct-stream.cc:3795)
==11732==    by 0x4AF4C16: octave_stream::puts(octave_value const&, std::string const&) (oct-stream.cc:3810)
==11732==    by 0x4C07674: Ffputs(octave_value_list const&, int) (file-io.cc:998)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:64)
==11732==    by 0x494EC84: octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov-builtin.cc:47)
==11732==    by 0x49E87A3: octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (ov.cc:1242)
==11732==  Address 0x688e053 is not stack'd, malloc'd or (recently) free'd
==11732==
 PASS   29/30   FAIL 1


Valgrind result for rand.cc:

  libinterp/corefcn/rand.cc ..............................==11732== Conditional jump or move depends on uninitialised value(s)
==11732==    at 0x637D42A: ignpoi_ (in $OCTAVESRCDIR/octave/build/liboctave/.libs/liboctave.so.1.0.1)
==11732==    by 0x63E53A3: octave_rand::do_nd_array(dim_vector const&, double) (oct-rand.cc:550)
==11732==    by 0x4E67BD6: octave_rand::nd_array(dim_vector const&, double) (oct-rand.h:161)
==11732==    by 0x4E66426: do_rand(octave_value_list const&, int, char const*, std::string const&, bool) (rand.cc:345)
==11732==    by 0x4E66D84: Frandp(octave_value_list const&, int) (rand.cc:1008)
==11732==    by 0x494F03E: octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) (ov-builtin.cc:131)
==11732==    by 0x494ED59: octave_builtin::subsref(std::string c

Arun Giridhar <arungiridhar>
Group Member
Mon 10 Sep 2012 04:01:51 AM UTC, comment #3: 


> but got
>   3.7000e+01 + 1.9763e-323i


These numbers look like unitialised memory. Can you check with valgrind and with CXXFLAGS=-g and nothing else?

Jordi GutiƩrrez Hermoso <jordigh>
Group Member
Mon 10 Sep 2012 04:01:20 AM UTC, comment #2: 

gdb bt trace atteched for problem in comment #1


(file #26512)

Michael Godfrey <godfrey>
Group Member
Mon 10 Sep 2012 03:45:20 AM UTC, comment #1: 

Using Fedora 17 x86_64 instead of what you got, I
get:
Integrated test scripts:

  libinterp/corefcn/__contourc__.cc ...................... PASS    1/1  
  libinterp/corefcn/__dispatch__.cc ...................... PASS    1/1  
  libinterp/corefcn/__lin_interpn__.cc ................... PASS    1/1  
  libinterp/corefcn/__pchip_deriv__.cc ................... PASS    1/1  
  libinterp/corefcn/__qp__.cc ............................ PASS    1/1  
  libinterp/corefcn/besselj.cc ........................... PASS  191/191
  libinterp/corefcn/betainc.cc ........................... PASS   23/23 
  libinterp/corefcn/bsxfun.cc ............................ PASS   73/73 
  libinterp/corefcn/cellfun.cc ...........................Stack dump:
0. Running pass 'CallGraph Pass Manager' on module 'octave'.
panic: Segmentation fault -- stopping myself...
make[1]: * [check] Segmentation fault (core dumped)
m


Michael Godfrey <godfrey>
Group Member
Mon 10 Sep 2012 03:25:51 AM UTC, original submission:  

Hello,

The 20120909 dev version passes tests with "make check" as expected when configured with --disable-jit, but fails a few numerical tests with --enable-jit, keeping everything else the same. The numerical differences are very small, but sometimes return complex instead of real and consequently break functions like fzero.

Here is a "diff -c" of the two test/fntests.log files (I have replaced the "/home/path/to/src" with "$OCTAVESRCDIR", everything else is the same):


*** build-nojit/test/fntests.log        2012-09-09 21:31:01.059421438 -0400
--- build/test/fntests.log        2012-09-09 22:05:36.971477029 -0400
***************
*** 77,82 ****
--- 77,96 ----
  >>>>> processing $OCTAVESRCDIR/octave/libinterp/dldfcn/tsearch.cc
  >>>>> processing $OCTAVESRCDIR/octave/libinterp/interp-core/oct-map.cc
  >>>>> processing $OCTAVESRCDIR/octave/libinterp/interp-core/pt-jit.cc
+   ***** assert (id (1+1i), 1+1i)
+ !!!!! test failed
+ assert (id (1 + 1i),1 + 1i) expected
+  1 + 1i
+ but got
+  1.0000 + 1.0000i
+ values do not match
+ shared variables
+   scalar structure containing the fields:
+
+     id =
+
+ @(x) x
+
  >>>>> processing $OCTAVESRCDIR/octave/libinterp/interp-core/sparse-xpow.cc
  >>>>> processing $OCTAVESRCDIR/octave/libinterp/interpfcn/data.cc
  >>>>> processing $OCTAVESRCDIR/octave/libinterp/interpfcn/defaults.cc
***************
*** 105,110 ****
--- 119,142 ----
  >>>>> processing $OCTAVESRCDIR/octave/libinterp/octave-value/ov-cx-diag.cc
  >>>>> processing $OCTAVESRCDIR/octave/libinterp/octave-value/ov-fcn-handle.cc
  >>>>> processing $OCTAVESRCDIR/octave/libinterp/octave-value/ov-fcn-inline.cc
+   ***** assert (feval (fn, 6), 37)
+ !!!!! test failed
+ assert (feval (fn, 6),37) expected
+  37
+ but got
+   3.7000e+01 + 1.9763e-323i
+ complex != real
+ shared variables   scalar structure containing the fields:
+     fn = f(x) = x.^2 + 1
+   ***** assert (fn (6), 37)
+ !!!!! test failed
+ assert (fn (6),37) expected
+  37
+ but got
+   3.7000e+01 + 1.9763e-323i
+ complex != real
+ shared variables   scalar structure containing the fields:
+     fn = f(x) = x.^2 + 1
  >>>>> processing $OCTAVESRCDIR/octave/libinterp/octave-value/ov-flt-re-mat.cc
  >>>>> processing $OCTAVESRCDIR/octave/libinterp/octave-value/ov-int16.cc
  >>>>> processing $OCTAVESRCDIR/octave/libinterp/octave-value/ov-int32.cc
***************
*** 353,360 ****
--- 385,402 ----
  >>>>> processing $OCTAVESRCDIR/octave/scripts/optimization/fminbnd.m
  >>>>> processing $OCTAVESRCDIR/octave/scripts/optimization/fminsearch.m
  >>>>> processing $OCTAVESRCDIR/octave/scripts/optimization/fminunc.m
+   ***** assert (fminunc (@(x) x^2, 1, optimset ("FunValCheck", "on")), 0, eps)
+ !!!!! test failed
+ fminunc: non-real value encountered
  >>>>> processing $OCTAVESRCDIR/octave/scripts/optimization/fsolve.m
  >>>>> processing $OCTAVESRCDIR/octave/scripts/optimization/fzero.m
+   ***** assert (fzero (@(x) x^(1/3) - 1e-8, [0,1], opt0), 1e-24, 1e-22*eps)
+ !!!!! test failed
+ fzero: not a valid initial bracketing
+ shared variables   scalar structure containing the fields:
+     opt0 =
+       scalar structure containing the fields:
+         TolX = 0
  >>>>> processing $OCTAVESRCDIR/octave/scripts/optimization/lsqnonneg.m
  >>>>> processing $OCTAVESRCDIR/octave/scripts/optimization/optimset.m
  >>>>> processing $OCTAVESRCDIR/octave/scripts/optimization/pqpnonneg.m
***************
*** 1107,1110 ****
  $OCTAVESRCDIR/octave/scripts/statistics/tests/z_test.m
  $OCTAVESRCDIR/octave/scripts/statistics/tests/z_test_2.m
  $OCTAVESRCDIR/octave/scripts/testfun/runtests.m
! $OCTAVESRCDIR/octave/build-nojit/scripts/plot/gnuplot_binary.m
--- 1149,1152 ----
  $OCTAVESRCDIR/octave/scripts/statistics/tests/z_test.m
  $OCTAVESRCDIR/octave/scripts/statistics/tests/z_test_2.m
  $OCTAVESRCDIR/octave/scripts/testfun/runtests.m
! $OCTAVESRCDIR/octave/build/scripts/plot/gnuplot_binary.m


Exact configure options for the JIT version (broken up to multiple lines for readability):

../configure --enable-jit CC="gcc" CXX="g++"
CFLAGS="-march=native -mtune=native -O3 -funroll-loops
    -ftracer -pthread"
CXXFLAGS="-march=native -mtune=native -O3 -funroll-loops
    -ftracer -pthread"
FFLAGS="-O3"
LLVM_CONFIG=`which llvm-config`


Exact configure options for the non-JIT version (broken up to multiple lines for readability):

../configure --enable-jit=no CC="gcc" CXX="g++"
CFLAGS="-march=native -mtune=native -O3 -funroll-loops
    -ftracer -pthread"
CXXFLAGS="-march=native -mtune=native -O3 -funroll-loops
    -ftracer -pthread"
FFLAGS="-O3"
LLVM_CONFIG=`which llvm-config`


Output of "uname -a":

Linux myname-laptop 3.2.0-30-generic-pae #48-Ubuntu SMP Fri Aug 24 17:14:09 UTC 2012 i686 i686 i386 GNU/Linux


Output of "llvm-config --version":

3.2svn


Arun Giridhar <arungiridhar>
Group Member

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:
   
   
Comment:
   

Attached Files
file #26527:  jit.valgrind.messages added by arungiridhar (244KiB - application/octet-stream)
file #26519:  jit_bug2 added by godfrey (3KiB - application/octet-stream)
file #26512:  jit_bug added by godfrey (7KiB - application/octet-stream)

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by rik5 (Updated the item)
  • -email is unavailable- added by philipnienhuis (Posted a comment)
  • -email is unavailable- added by matzeri (Posted a comment)
  • -email is unavailable- added by fisheater (Posted a comment)
  • -email is unavailable- added by jordigh (Posted a comment)
  • -email is unavailable- added by godfrey (Posted a comment)
  • -email is unavailable- added by arungiridhar (Submitted the item)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

    Only group members can vote.

     

    Follow 5 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2012-09-15 rik5 StatusNone Fixed
        Open/ClosedOpen Closed
    2012-09-10 arungiridhar Attached File- Added jit.valgrind.messages, #26527
    2012-09-10 godfrey Attached File- Added jit_bug2, #26519
    2012-09-10 godfrey Attached File- Added jit_bug, #26512

    Back to the top

    Powered by Savane 3.13-caa5.
    Corresponding source code