Opened 13 years ago

Last modified 12 years ago

#30627 closed defect

octave-devel crashes on mismatched matrix dimensions — at Version 1

Reported by: jmrosenstock@… Owned by: michaelld@…
Priority: Normal Milestone:
Component: ports Version: 2.0.1
Keywords: Cc:
Port: octave-devel

Description (last modified by mf2k (Frank Schima))

I reported this to octave: https://savannah.gnu.org/bugs/index.php?33943

They think something with catching exceptions isn't right with the macports configuration, perhaps related to exception handling.

"The xgemm function is part of Octave (liboctave/dMatrix.cc). When it detects a dimension mismatch, it calls gripe_nonconformant (liboctave/lo-array-gripes.cc). That function calls an error handler using the function pointer current_liboctave_error_with_id_handler. Normally, that is set to lo_error_with_id_handler (set in the function initialize_error_handlers in src/octave.cc). That function ultimately calls octave_throw_execution_exception (libcruft/misc/quit.cc) which ultimately throws a C++ exception which should be caught in the main_loop function (src/toplev.cc). I'd guess the abort is happening because the exception is not caught as it should be."

GNU Octave, version 3.4.2 
Octave was configured for "i386-apple-darwin9.8.0". 
octave:1> [ 1 2 ] * [ 1 2 3 ] 

Program received signal SIGABRT, Aborted. 
0x915b1d52 in __kill () 
(gdb) bt 
#0 0x915b1d52 in __kill () 
#1 0x915b1d44 in kill$UNIX2003 () 
#2 0x91624242 in raise () 
#3 0x91630681 in abort () 
#4 0x970c4a2a in _Unwind_Resume () 
#5 0x023636cd in xgemm () 
#6 0x02363760 in operator* () 
#7 0x017343be in oct_binop_mul () 
#8 0x0145676a in do_binary_op () 
#9 0x014f4832 in tree_binary_expression::rvalue1 () 
#10 0x011ffcce in fold () 
#11 0x012038dd in octave_parse () 
#12 0x012ea641 in main_loop () 
#13 0x0127b92e in octave_main () 
#14 0x00001ff0 in main () 

Change History (1)

comment:1 Changed 13 years ago by mf2k (Frank Schima)

Description: modified (diff)
Owner: changed from macports-tickets@… to michaelld@…
Note: See TracTickets for help on using tickets.