bugGNU Octave - Bugs: bug #36866, Calling imagesc on complex matrix...

 
 

bug #36866: Calling imagesc on complex matrix causes octave to crash

Submitted by:  None
Submitted on:  Wed 18 Jul 2012 04:52:27 PM UTC  
 
Category: Plotting with gnuplotSeverity: 3 - Normal
Priority: 5 - NormalItem Group: Segfault, Bus Error, etc.
Status: FixedAssigned to: None
Originator Name: DustinOriginator Email: -unavailable-
Open/Closed: ClosedRelease: 3.6.1
Operating System: Microsoft Windows

Add a New Comment(Rich Markup)
   

You are not logged in

Please log in, so followups can be emailed to you.

 

(Jump to the original submission Jump to the original submission)

Tue 31 Jul 2012 10:34:28 PM UTC, comment #7:

Jordi, that's fine. I have never had access to Matlab and I didn't know how they were choosing to handle this case.

Rik <rik5>
Project Administrator
Tue 31 Jul 2012 10:09:40 PM UTC, comment #6:

Never mind, I found the UB, and why it wasn't showing up in my development build. There was an out of bounds indexing problem concerning empty matrices, and in my dev build I build with bound-checking.

Rik, I have instead opted to warn and show the real part like imshow does. In addition, I've added a few more checks on the C++ side to hopefully make it impossible to crash Octave with a bad _go_image_ call:

http://hg.savannah.gnu.org/hgweb/octave/rev/7a3957ca99c3

Jordi Gutiérrez Hermoso <jordigh>
Project Administrator
Tue 31 Jul 2012 08:15:18 PM UTC, comment #5:

Unfortunately all I got out of it at the time was the generic Windows "Octave has encountered an error and needs to close" message. It was very reproducible on the machine I was working on (which I am now 800 miles away from), but I have not been able to reproduce it on a Linux machine. I will try it on my Windows box at home if you are interested, though.

Dustin

Anonymous
Tue 31 Jul 2012 08:06:40 PM UTC, comment #4:

Out of curiousity, do you remember exactly what was the crash? I don't see it on my system. Segfault? Stack corruption? Can you reproduce it?

Jordi Gutiérrez Hermoso <jordigh>
Project Administrator
Tue 31 Jul 2012 07:54:07 PM UTC, comment #3:

Octave will continue "running" (albeit in a useless state since it is totally preoccupied with trying to execute the plot) until you try to close the plot window. Closing the plot window causes Octave to crash. The console output I posted originally was grabbed before closing the plot window.

Dustin

Anonymous
Tue 31 Jul 2012 06:19:20 PM UTC, comment #2:

Is this all you see? This isn't a crash. Is Octave still running after you see this?

Jordi Gutiérrez Hermoso <jordigh>
Project Administrator
Tue 31 Jul 2012 06:12:12 PM UTC, comment #1:

Image data really can't be complex. I have put a test in the image routines which checks for complex data and avoids creating the plot if any is present. This will stop the crash you are seeing since the pipe to gnuplot will not be opened.

The changeset is here (http://hg.savannah.gnu.org/hgweb/octave/rev/489736962e80). In order to access the fix you will need to build from Mercurial sources or wait until the next major release 3.8.0.

Rik <rik5>
Project Administrator
Wed 18 Jul 2012 04:52:27 PM UTC, original submission:

I'm running octave3.6.1_gcc4.6.2 on Windows 7 with gnuplot. If I try to call imagesc on a complex matrix, Octave gives an error but also creates an empty gnuplot window. Any interaction with this plot window (eg clicking, resizing) will cause a large number of errors to appear on the Octave terminal. Closing the plot window causes Octave to crash.

Example output (prior to crash):

octave:4> A = ones(5) + 1i*ones(5);
octave:5> imagesc(A)
error: octave_base_value::array_value(): wrong type argument `complex matrix'
error: called from:
error: C:\Octave\Octave3.6.1_gcc4.6.2\share\octave\3.6.1\m\image\image.m at line 130, column 7
error: C:\Octave\Octave3.6.1_gcc4.6.2\share\octave\3.6.1\m\image\image.m at line 78, column 7
error: C:\Octave\Octave3.6.1_gcc4.6.2\share\octave\3.6.1\m\image\imagesc.m at line 111, column 7
error: C:\Octave\Octave3.6.1_gcc4.6.2\share\octave\3.6.1\m\image\imagesc.m at line 60, column 9
error: octave_base_value::array_value(): wrong type argument `complex matrix'
octave:5> error: octave_base_value::array_value(): wrong type argument `complex matrix'
error: octave_base_value::double_value (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::matrix_value(): wrong type argument `<unknown type>'
error: octave_base_value::matrix_value(): wrong type argument `<unknown type>'
error: octave_base_value::array_value(): wrong type argument `complex matrix'
error: octave_base_value::double_value (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::matrix_value(): wrong type argument `<unknown type>'
error: octave_base_value::matrix_value(): wrong type argument `<unknown type>'
error: octave_base_value::array_value(): wrong type argument `complex matrix'
error: octave_base_value::double_value (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::matrix_value(): wrong type argument `<unknown type>'
error: octave_base_value::matrix_value(): wrong type argument `<unknown type>'
error: octave_base_value::array_value(): wrong type argument `complex matrix'
error: octave_base_value::double_value (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::matrix_value(): wrong type argument `<unknown type>'
error: octave_base_value::matrix_value(): wrong type argument `<unknown type>'
error: octave_base_value::array_value(): wrong type argument `complex matrix'
error: octave_base_value::double_value (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::matrix_value(): wrong type argument `<unknown type>'
error: octave_base_value::matrix_value(): wrong type argument `<unknown type>'
error: octave_base_value::array_value(): wrong type argument `complex matrix'
error: octave_base_value::double_value (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::matrix_value(): wrong type argument `<unknown type>'
error: octave_base_value::matrix_value(): wrong type argument `<unknown type>'
error: octave_base_value::array_value(): wrong type argument `complex matrix'
error: octave_base_value::double_value (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::matrix_value(): wrong type argument `<unknown type>'
error: octave_base_value::matrix_value(): wrong type argument `<unknown type>'
error: octave_base_value::array_value(): wrong type argument `complex matrix'
error: octave_base_value::double_value (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::matrix_value(): wrong type argument `<unknown type>'
error: octave_base_value::matrix_value(): wrong type argument `<unknown type>'
error: octave_base_value::array_value(): wrong type argument `complex matrix'
error: octave_base_value::double_value (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::matrix_value(): wrong type argument `<unknown type>'
error: octave_base_value::matrix_value(): wrong type argument `<unknown type>'
error: octave_base_value::array_value(): wrong type argument `complex matrix'
error: octave_base_value::double_value (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::convert_to_str_internal (): wrong type argument `<unknown type>'
error: octave_base_value::matrix_value(): wrong type argument `<unknown type>'
error: octave_base_value::matrix_value(): wrong type argument `<unknown type>'
error: octave_base_value::array_value(): wrong type argument `complex matrix'

Anonymous

 

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

Attach File(s):
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -unavailable- added by jordigh (Posted a comment)
  • -unavailable- added by rik5 (Posted a comment)
  • -unavailable- added by None (Submitted the item)
  •  

    Do you think this task is very important?
    If so, you can click here to add your encouragement to it.
    This task has 0 encouragements so far.

    Only project members can vote.

     

    Please enter the title of George Orwell's famous dystopian book (it's a date):

     

     

    Follow 2 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Tue 31 Jul 2012 06:12:12 PM UTCrik5StatusNone=>Fixed
      Open/ClosedOpen=>Closed

    Back to the top


    Powered by Savane 3.1-cleanup1