octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Segfault when running "make check"


From: PhilipNienhuis
Subject: Re: Segfault when running "make check"
Date: Wed, 30 Jan 2013 13:32:52 -0800 (PST)


Julien Bect wrote
> 
> Jordi Gutiérrez Hermoso-2 wrote
>> On 30 January 2013 09:19, Julien Bect <

>> julien.bect@

>> > wrote:
>>> Note that I haven't been able to run a full "make check", though (it
>>> segfaults when I reach the tests for dblquad.m, but this is not
>>> related to my patch).
>> 
>> Is this a known problem? Should we diagnose it?
>> 
>> - Jordi G. H.
> Yes it is known:
> https://mailman.cae.wisc.edu/pipermail/octave-maintainers/2012-December/031324.html
> 
> I get this on both of my dev boxes (an old Pentium M laptop and a
> middle-aged Intel Core Duo) both with Mageia 2.
> 
> More or less based on the various Java-related segfault bug reports (where
> Java actually seems unrelated) I didn't pursue much further as I'm unable
> to debug this and I figured (hoped) it would be picked up at some point.
> (Nobody did, until now.) 
> Moreover, after installation Octave runs OK w/o segfaults, including
> octave-cli and octave (GUI).
> 
> For me it started with a segfault in triplequad.m (see URL above).
> After pulling in and updating my local hg clone the segfault shifted to
> dblquad.m
> 
> Interestingly it only crashes during ' make check', more precisely, when
> running test/fntests.m, and only with octave-cli:
> 
> If I fire up Octave GUI, surf to 
> <Octave_source_dir>
> /test and run fntests.m, all tests pass w/o crash.
> If I do this with octave-cli, it segfaults in dblquad.m.
> If run octave-cli or the Octave-GUI, and type 'test dblquad.m', there's no
> crash.
> 
> When doing 'make check', dblquad segfaults almost immediately while trying
> ' test dblquad' takes quite a bit of time to complete.
> 
> FYI:
> Linux Mageia 2
> gcc 4.6.3
> 
> Obviously I'm willing to help debug this, but this will be a hard one as I
> have only an hour or so each evening and I'm not very acquainted with
> valgrind etc.
> 
> To start, a gdb backtrace (from gdb octave-cli) follows below. 
> I hope it is useful as Octave is being built simultaneously as I tried
> 'make check' but my tree apparently was updated but not rebuilt yet.
> The rebuild will take probably another hour, if you want I'll post a new
> backtrace with the updated build (but maybe only tomorrow)

Build ended OK

address@hidden octave]$ hg summary
parent: 15972:22ab4fe661d7 tip

After installation and running: 
gdb octave
:
bt

I got essentially the same results as in earlier post (only the memory
addresses differed a little, but stack trace still 242 deep).

A run of valgrind octave-cli follows:

==========================================
address@hidden test]$ valgrind octave-cli
==24079== Memcheck, a memory error detector
==24079== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==24079== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==24079== Command: octave-cli
==24079== 
GNU Octave, version 3.7.1+
Copyright (C) 2012 John W. Eaton and others.
This is free software; see the source code for copying conditions.
There is ABSOLUTELY NO WARRANTY; not even for MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  For details, type 'warranty'.

Octave was configured for "i686-pc-linux-gnu".

Additional information about Octave is available at http://www.octave.org.

Please contribute if you find this software useful.
For more information, visit http://www.octave.org/get-involved.html

Read http://www.octave.org/bugs.html to learn how to submit bug reports.

For information about changes from previous versions, type 'news'.

octave-cli:1> pwd
ans = /home/philip/devel/octdev/octave/test
octave-cli:2> fntests

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 ........................... PASS  122/122 
  libinterp/corefcn/conv2.cc ............................. PASS   24/24  
  libinterp/corefcn/dassl.cc ............................. PASS    4/4   
  libinterp/corefcn/det.cc ............................... PASS    5/5   
  libinterp/corefcn/dlmread.cc ........................... PASS   20/20  
  libinterp/corefcn/dot.cc ............................... PASS    6/6   
  libinterp/corefcn/eig.cc ............................... PASS   20/20  
  libinterp/corefcn/fft.cc ............................... PASS   19/19  
  libinterp/corefcn/fft2.cc .............................. PASS    4/4   
  libinterp/corefcn/filter.cc ............................ PASS   14/14  
  libinterp/corefcn/find.cc .............................. PASS   16/16  
  libinterp/corefcn/gammainc.cc .......................... PASS    4/4   
  libinterp/corefcn/gcd.cc ............................... PASS    6/6   
  libinterp/corefcn/givens.cc ............................ PASS    5/5   
  libinterp/corefcn/hess.cc .............................. PASS    5/5   
  libinterp/corefcn/hex2num.cc ........................... PASS    2/2   
  libinterp/corefcn/inv.cc ............................... PASS    5/5
  libinterp/corefcn/kron.cc .............................. PASS    6/6
  libinterp/corefcn/lookup.cc ............................ PASS   20/20
  libinterp/corefcn/lsode.cc ............................. PASS    5/5
  libinterp/corefcn/lu.cc ................................ PASS   20/20
  libinterp/corefcn/luinc.cc ............................. PASS    2/2
  libinterp/corefcn/mappers.cc ........................... PASS  388/388
  libinterp/corefcn/matrix_type.cc ....................... PASS   51/51
  libinterp/corefcn/max.cc ............................... PASS   12/12
  libinterp/corefcn/md5sum.cc ............................ PASS    2/2
  libinterp/corefcn/mgorth.cc ............................ PASS    2/2
  libinterp/corefcn/nproc.cc ............................. PASS    1/1
  libinterp/corefcn/pinv.cc .............................. PASS    8/8
  libinterp/corefcn/quad.cc .............................. PASS    8/8
  libinterp/corefcn/quadcc.cc ............................ PASS   19/19
  libinterp/corefcn/qz.cc ................................ PASS    4/4
  libinterp/corefcn/rand.cc ..............................==24079==
Conditional jump or move depends on uninitialised value(s)
==24079==    at 0x55502F3: ignpoi_ (in
/usr/local/lib/octave/3.7.1+/liboctave.so.1.0.1)
==24079==    by 0x5551CB6: dignpoi_ (in
/usr/local/lib/octave/3.7.1+/liboctave.so.1.0.1)
==24079==    by 0x560BB5C: octave_rand::fill(int, double*, double)
(oct-rand.cc:761)
==24079==    by 0x560BC7A: octave_rand::do_nd_array(dim_vector const&,
double) (oct-rand.cc:550)
==24079==
 PASS   57/57
  libinterp/corefcn/rcond.cc ............................. PASS    8/8
  libinterp/corefcn/regexp.cc ............................ PASS  106/106
  libinterp/corefcn/schur.cc ............................. PASS    8/8
  libinterp/corefcn/spparms.cc ........................... PASS    9/9
  libinterp/corefcn/sqrtm.cc ............................. PASS    3/3
  libinterp/corefcn/str2double.cc ........................ PASS   29/29
  libinterp/corefcn/strfind.cc ........................... PASS   13/13
  libinterp/corefcn/strfns.cc ............................ PASS   86/86
  libinterp/corefcn/sub2ind.cc ........................... PASS   24/24  
  libinterp/corefcn/svd.cc ............................... PASS   18/18  
  libinterp/corefcn/syl.cc ............................... PASS    5/5   
  libinterp/corefcn/syscalls.cc .......................... PASS    1/1   
  libinterp/corefcn/time.cc ..............................==24079==
Conditional jump or move depends on uninitialised value(s)
==24079==    at 0x5B96CD0: strftime_case_ (strftime.c:942)
==24079==    by 0x5B57C4C: octave_base_tm::strftime(std::string const&)
const (oct-time.cc:183)
==24079==    by 0xF: ???
==24079== 
==24079== Conditional jump or move depends on uninitialised value(s)
==24079==    at 0x5B96D23: strftime_case_ (strftime.c:953)
==24079== 
==24079== Conditional jump or move depends on uninitialised value(s)
==24079==    at 0x5B96D23: strftime_case_ (strftime.c:953)
==24079==    by 0x7F: ???
==24079==
==24079== Conditional jump or move depends on uninitialised value(s)
==24079==    at 0x5B96D23: strftime_case_ (strftime.c:953)
==24079==    by 0x8036: ???
==24079==
==24079== Conditional jump or move depends on uninitialised value(s)
==24079==    at 0x5B96D23: strftime_case_ (strftime.c:953)
==24079==    by 0x803730: ???
==24079==
==24079== Conditional jump or move depends on uninitialised value(s)
==24079==    at 0x5B96D23: strftime_case_ (strftime.c:953)
==24079==    by 0x80373130: ???
==24079==
==24079== Conditional jump or move depends on uninitialised value(s)
==24079==    at 0x5B96D47: strftime_case_ (strftime.c:959)
==24079==    by 0x80373130: ???
==24079==
==24079== Conditional jump or move depends on uninitialised value(s)
==24079==    at 0x40288C7: strlen (in
/usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==24079==    by 0xF: ???
==24079==
 PASS   20/20
  libinterp/corefcn/tril.cc .............................. PASS    2/2
  libinterp/dldfcn/__delaunayn__.cc ...................... PASS    1/1
  libinterp/dldfcn/__dsearchn__.cc ....................... PASS    1/1
  libinterp/dldfcn/__fltk_uigetfile__.cc ................. PASS    1/1
  libinterp/dldfcn/__glpk__.cc ........................... PASS    1/1
  libinterp/dldfcn/__magick_read__.cc .................... PASS    4/4
  libinterp/dldfcn/__voronoi__.cc ........................ PASS    1/1
  libinterp/dldfcn/chol.cc ............................... PASS   29/29  
  libinterp/dldfcn/convhulln.cc .......................... PASS    4/4   
  libinterp/dldfcn/dmperm.cc ............................. PASS    5/5   
  libinterp/dldfcn/eigs.cc ............................... PASS  149/149 
  libinterp/dldfcn/fftw.cc ............................... PASS    4/4   
  libinterp/dldfcn/qr.cc ................................. PASS   48/48  
  libinterp/dldfcn/tsearch.cc ............................ PASS    6/6   
  libinterp/interp-core/oct-map.cc ....................... PASS    8/8   
  libinterp/interp-core/pt-jit.cc ........................==24079== Invalid
read of size 4
==24079==    at 0xDC1E449: ???
==24079==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
==24079==
vex x86->IR: unhandled instruction bytes: 0xDF 0xC9 0xD 0xEC
==24079== valgrind: Unrecognised instruction at address 0xdc1e449.
==24079==    at 0xDC1E449: ???
==24079== Your program just tried to execute an instruction that Valgrind
==24079== did not recognise.  There are two possible reasons for this.
==24079== 1. Your program has a bug and erroneously jumped to a non-code
==24079==    location.  If you are running Memcheck and you just saw a
==24079==    warning about a bad jump, it's probably your program's fault.
==24079== 2. The instruction is legitimate but Valgrind doesn't handle it,
==24079==    i.e. it's Valgrind's fault.  If you think this is the case or
==24079==    you are not sure, please let us know and we'll try to fix it.
==24079== Either way, Valgrind will now raise a SIGILL signal which will
==24079== probably kill your program.
panic: Illegal instruction -- stopping myself...
==24079==
==24079== HEAP SUMMARY:
==24079==     in use at exit: 39,131,740 bytes in 92,083 blocks
==24079==   total heap usage: 33,776,298 allocs, 33,684,215 frees,
2,628,405,699 bytes allocated
==24079==
==24079== LEAK SUMMARY:
==24079==    definitely lost: 116 bytes in 27 blocks
==24079==    indirectly lost: 182 bytes in 7 blocks
==24079==      possibly lost: 1,317,548 bytes in 29,245 blocks
==24079==    still reachable: 37,813,894 bytes in 62,804 blocks
==24079==         suppressed: 0 bytes in 0 blocks
==24079== Rerun with --leak-check=full to see details of leaked memory
==24079==
==24079== For counts of detected and suppressed errors, rerun with: -v
==24079== Use --track-origins=yes to see where uninitialised values come
from
==24079== ERROR SUMMARY: 26 errors from 10 contexts (suppressed: 198 from
13)
Killed





--
View this message in context: 
http://octave.1599824.n4.nabble.com/Segfault-when-running-make-check-tp4649275p4649297.html
Sent from the Octave - Maintainers mailing list archive at Nabble.com.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]