Help save net neutrality! Learn more.
Close

#1086 Stackspace check on 64-bit platform not large enough

v4.2.0
closed
None
none
5
2014-04-15
2012-07-10
No

Recursive programs that hit the stack check limit crash trying to raise the error because there's not enough stack space left to process the error. Bumping the limit on the error check appears to fix the problem. I suspect this is only a problem for the 64-bit version. I'm seeing this on Windows, but I suspect other platforms may have the problem too. This simple program can be used to test this:

call recurse

::routine recurse
call recurse

If people see this on other platforms, please comment here. Indicate whether this is 32- or 64-bit.

Discussion

  • Rick McGuire

    Rick McGuire - 2012-07-10

    This doesn't crash with the 32-bit Windows build, so it looks like a 64-bit issue

     
  • David Ashley

    David Ashley - 2012-07-10

    No problem on Fedora 17 64 bit. Error condition was raised properly. ooRexx 4.1.1.

     
  • Rick McGuire

    Rick McGuire - 2012-07-10

    Committed revision 8030.-- 4.1 branch
    Committed revision 8029. -- trunk

    This fixes only Windows issues. I'll leave this open until we hear from more platforms.

     
  • U. Zinngrebe

    U. Zinngrebe - 2012-07-10

    No problem on openSuSE 11.4 64 bit - error condition raised properly.
    test program and console log below

    uli@ulmo:~/bin> rpm -q ooRexx
    ooRexx-4.2.0-7988.opensuse1140.x86_64


    ! /usr/bin/rexx

    signal on any

    call recurse
    say 'no exception'
    return

    any: o= .context~condition
    do i over o~allindexes
    say left(i,20) o[i]
    if o[i]~isA(.list) | o[i]~isA(.array) then do
    say left('',20) o[i]~items 'items'
    do j over o[i]~allindexes
    say left('',20) o[i][j]
    end j
    end
    end i
    return

    ::routine recurse
    call recurse


    uli@ulmo:~/bin> ./test
    PROPAGATED 1
    PROGRAM /home/uli/bin/test
    PACKAGE a Package
    CONDITION SYNTAX
    STACKFRAMES a List
    1134 items
    a StackFrame
    ...
    a StackFrame
    POSITION 24
    INSTRUCTION SIGNAL
    DESCRIPTION
    CODE 11.1
    ADDITIONAL an Array
    0 items
    RC 11
    TRACEBACK a List
    1134 items
    24 - call recurse
    ...
    24 - call recurse
    4 - call recurse
    MESSAGE Insufficient control stack space; cannot continue execution
    ERRORTEXT Control stack full

     
  • Jon Wolfers

    Jon Wolfers - 2012-07-11

    On Windows 7 32Bit running your script gives:

    Error 11 running c:\ooRexx\test1.rex line 4: Control stack full
    Error 11.1: Insufficient control stack space; cannot continue execution

    Open Object Rexx Version 4.1.0
    Build date: Dec 5 2010
    Addressing Mode: 32

    hth Jon

     
  • Mark Miesfeld

    Mark Miesfeld - 2012-08-03

    No crash on Fedora 11 64-bit or Ubuntu 32-bit.

     
  • Rick McGuire

    Rick McGuire - 2013-11-20
    • status: open --> pending
    • assigned_to: Rick McGuire
    • Pending work items: --> none
    • Group: --> v4.2.0
     
  • Rick McGuire

    Rick McGuire - 2014-04-15
    • status: pending --> closed
     


Anonymous

Cancel  Add attachments