bugGNU Octave - Bugs: bug #38435, delete.m "max recursion depth...

 
 

bug #38435: delete.m "max recursion depth exceeded" in windows 1.2.0 package

Submitter:  Philip Nienhuis <philipnienhuis>
Submitted:  Wed 27 Feb 2013 11:13:01 PM UTC
   
 
Category:  Octave Package Severity:  3 - Normal
Priority:  5 - Normal Item Group:  Regression
Status:  Fixed Assigned to:  None
Originator Name:  Philip Nienhuis Open/Closed:  * Closed
Release:  * 3.6.2 Operating System:  * Microsoft Windows
Fixed Release:  None Planned Release:  None
* Mandatory Fields

Add a New Comment Rich Markup
   

Jump to the original submission

Fri 01 Mar 2013 03:02:48 PM UTC, comment #9: 

Fixed by:

http://sourceforge.net/p/octave/code/11673/

Thanks for testing.

Michael Goffioul <goffioul>
Fri 01 Mar 2013 02:54:13 PM UTC, comment #8: 

Fixed package windows-1.2.1.tar.gz works OK.

Thanks for fixing!

Philip Nienhuis <philipnienhuis>
Group Member
Thu 28 Feb 2013 10:52:43 PM UTC, comment #7: 

Would you mind testing this fixed package, before I make a new release?


(file #27550)

Michael Goffioul <goffioul>
Thu 28 Feb 2013 10:45:25 PM UTC, comment #6: 

That's because com_delete doesn't return any value, so octave cannot do the assignment: output = <empty>.

It's a copy-n-paste error.

I'm glad you tested it...

Michael Goffioul <goffioul>
Thu 28 Feb 2013 10:39:41 PM UTC, comment #5: 

If in share\octave\packages\windows-1.2.0\@octave_com_object\delete.m the line:


  output = com_delete (varargin{:});


is replaced by a simple


  com_delete (varargin{:});


it all works OK, both in 3.6.x and in (MXE compiled) 3.7.2+
I do not understand why, but it works. I also do not understand why "output = " LHS apparently doesn't harm in the other functions in .\@octave_com_object\

The Java message below is a red herring, it was just a next statement in one of the io functions. The COM error occurred in a try-catch.

Philip Nienhuis <philipnienhuis>
Group Member
Thu 28 Feb 2013 09:45:15 AM UTC, comment #4: 

BTW this was in Octave-3.6.2_MinGW w separate OF Java package.

Any reason to suspect that windows-1.2.0 will work better in 3.7.1+ w integrated Java?

Philip Nienhuis <philipnienhuis>
Group Member
Thu 28 Feb 2013 07:11:59 AM UTC, comment #3: 

Heh... I could (should) have seen that myself (if it wasn't after midnight :-) )

Fixing that helps a bit.
But then I get:

octave:1> intf = 'com'
intf = com
octave:2> pkg load windows
octave:3> io_xls_testscript

Testing .xls interface com ...

 1. Initialize arrays.

 2. Insert first empty sheet.
Checking requested interface(s):
Creating file io-test.xls
error: value on right hand side of assignment is undefined
error: called from:
error:   C:\Programs\Octave\Octave3.6.2_gcc4.6.2\share\octave\packages\windows-1.2.0\@octave_com_object\delete.m at line 3, column 10
error:   C:\Programs\Octave\Octave3.6.2_gcc4.6.2\share\octave\packages\io-1.2.0\private\__COM_oct2spsh__.m at line 233, column 3
error:   C:\Programs\Octave\Octave3.6.2_gcc4.6.2\share\octave\packages\io-1.2.0\oct2xls.m at line 188, column 17
error:   C:\Programs\Octave\Octave3.6.2_gcc4.6.2\share\octave\packages\io-1.2.0\xlswrite.m at line 173, column 21
error:   C:\Programs\Octave\Octave3.6.2_gcc4.6.2\share\octave\packages\io-1.2.0\io_xls_testscript.m at line 46, column 1
octave:3>


Adding in a "keyboard and stepping gives:


octave:3> intf = 'com'
intf = com
octave:4> io_xls_testscript

Testing .xls interface com ...

 1. Initialize arrays.

 2. Insert first empty sheet.
Checking requested interface(s):
stopped in C:\Programs\Octave\Octave3.6.2_gcc4.6.2\share\octave\packages\windows-1.2.0\@octave_com_o
bject\delete.m at line 2
2: keyboard
debug> varargin{:}
ans =

<COM object _Application (0x0x285044)>

debug> dbstep
stopped in C:\Programs\Octave\Octave3.6.2_gcc4.6.2\share\octave\packages\windows-1.2.0\@octave_com_object\delete.m at line 3
3:   output = com_delete (varargin{:});
debug> dbstep
error: value on right hand side of assignment is undefined
error: called from:
error:   C:\Programs\Octave\Octave3.6.2_gcc4.6.2\share\octave\packages\windows-1.2.0\@octave_com_object\delete.m at line 3, column 10
stopped in C:\Programs\Octave\Octave3.6.2_gcc4.6.2\share\octave\packages\java-1.2.9\javaclasspath.m at line 49
49:   dynamic_path = java_invoke ("org.octave.ClassHelper", "getClassPath");
debug>


So there we go..... interference with the Java class helpers.... :-(

Philip Nienhuis <philipnienhuis>
Group Member
Wed 27 Feb 2013 11:16:20 PM UTC, comment #2: 

Stupid error on my side, @octave_com_object/delete.m calls itself instead of calling com_delete().

Michael Goffioul <goffioul>
Wed 27 Feb 2013 11:15:08 PM UTC, comment #1: 

(Interesting.... the "verbatim" stuff in the Octave bug tracker seems to eat single backslashes....)

Philip Nienhuis <philipnienhuis>
Group Member
Wed 27 Feb 2013 11:13:01 PM UTC, original submission:  

The windows-1.2.0 package doesn't seem to correctly process the "delete" command with:
- Octave_3.6.2_gcc4.6.2 (MinGW)
- Octave-3.6.4_MXE

I can't test in Octave-3.6.2_MSVC2010 as I have no MSVC build tools.


octave:4> pkg list
Package Name         | Version | Installation directory
---------------------+---------+-----------------------
:
<snip>
                 io *|   1.2.0 | ...OctaveOctave3.6.2_gcc4.6.2shareoctavepackagesio-1.2.0
:
<snip>
:
            windows  |   1.2.0 | ...Octave3.6.2_gcc4.6.2shareoctavepackageswindows-1.2.0
:
<snip>
:
octave:5> pkg load windows
octave:6> intf = 'com'
intf = com
octave:7> io_xls_testscript

Testing .xls interface com ...

 1. Initialize arrays.

 2. Insert first empty sheet.
Checking requested interface(s):
error: max_recursion_depth exceeded
error: called from:
error:   C:ProgramsOctaveOctave3.6.2_gcc4.6.2shareoctavepackageswindows-1.2.0@octave_com_objectdelete.m at line 3, column 10
error:   C:ProgramsOctaveOctave3.6.2_gcc4.6.2shareoctavepackageswindows-1.2.0@octave_com_objectdelete.m at line 3, column 10
error:   C:ProgramsOctaveOctave3.6.2_gcc4.6.2shareoctavepackageswindows-1.2.0@octave_com_objectdelete.m at line 3, column 10
:
<many many more of these delete.m error messages>
:
error:   C:ProgramsOctaveOctave3.6.2_gcc4.6.2shareoctavepackageswindows-1.2.0@octave_com_objectdelete.m at line 3, column 10
error:   C:ProgramsOctaveOctave3.6.2_gcc4.6.2shareoctavepackagesio-1.2.0private__COM_oct2spsh__.m at line 233, column 3
error:   C:ProgramsOctaveOctave3.6.2_gcc4.6.2shareoctavepackagesio-1.2.0oct2xls.m at line 188, column 17
error:   C:ProgramsOctaveOctave3.6.2_gcc4.6.2shareoctavepackagesio-1.2.0xlswrite.m at line 173, column 21
error:   C:ProgramsOctaveOctave3.6.2_gcc4.6.2shareoctavepackagesio-1.2.0io_xls_testscript.m at line 46, column 1
octave:7>


With windows-1.1.0 all works correctly (apart from "dispatch is deprecated" complaints), both in MinGW and MXE builds.

Commenting out the offending "delete" lines in the relevant io package functions lines makes windows-1.2.0 work OK, but AFAIK "delete (<COM object>)" should just work, no?
After all it's largely the same code as in the mat2xls.m file in the windows-1.2.0/examples subdir.

Philip Nienhuis <philipnienhuis>
Group Member

 

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

Attach Files:
   
   
Comment:
   

Attached Files
file #27550:  windows-1.2.1.tar.gz added by goffioul (53KiB - application/x-gzip - Fixed package)

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by philipnienhuis (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 4 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2013-03-01 goffioul StatusNone Fixed
        Open/ClosedOpen Closed
    2013-02-28 goffioul Attached File- Added windows-1.2.1.tar.gz, #27550
    2013-02-27 philipnienhuis Carbon-Copy- Added -email is unavailable-

    Back to the top

    Powered by Savane 3.13-02a9.
    Corresponding source code