Menu

#223 ooRexx V3.1.1 and Windows Vista (64)

v3.1
closed
5
2012-08-14
2007-01-08
suprhulk
No

I installed Windows Vista Ultimate on Sunday 01/07/2006.

Monday morning, 01/08/2006, I installed ooRex311.

Everything works except for the "RxFuncAdd" function.

That always returns a non-zero result.

I try to "add" and execute "SysFuncLoad" for "rexxutil" in almost every rexx script I have.

Is this an "authorization" problem? I'm encountering a lot of adminstration problems which may be a user error.

If not, can I help debug this problem?

I've got Ms VisualStudio2005.

I've used CVS (experienced) and SVN (novice). Does anyone have a "Quick and Dirty" document descrbing how to get and build the ooRexx311 source?

Thanks,

RickH

P.S. I've been writing REXX and REXX extensions for twenty years now. I'm not a novice regarding "C", "C++", "Java" or "Rexx" development. I can help find out this problem.

Discussion

  • suprhulk

    suprhulk - 2007-01-08

    Logged In: YES
    user_id=1215919
    Originator: YES

    Whups, I just realized that I'd need GCC. I guess I'd need to install CYGWin?

     
  • David Ashley

    David Ashley - 2007-01-08

    Logged In: YES
    user_id=931756
    Originator: NO

    Starting with an earlier version of Object Rexx (not sure which one), the RexxUtil function library is loaded by default when the interpreter is first initialized. Thus there is no need to ever "Add" a RexxUtil function. You can safely either remove that code from your application or ignore the results of the "Add" and SysFuncLoad functions. All of the RexxUtil functions will just work as if they were builtin functions.

    BTW, this is true for all platforms, not just the Windows version of ooRexx.

     
  • suprhulk

    suprhulk - 2007-01-09

    Logged In: YES
    user_id=1215919
    Originator: YES

    Starting with an earlier version of Object Rexx (not sure which one), the
    RexxUtil function library is loaded by default when the interpreter is
    first initialized.

    That's great to hear! I can change my global load/init script, "rxloadfuncs.rex", to ignore "REXXUTIL"!

    Unfortunately "RxFuncAdd" is failing when I attempt to load/init my own rexx extension DLLs.

    Perhaps it's just a bug regarding the RC in V311 (I was running V301). I'll run a test by changing my "rxloadfuncs.rex" script to ignore the RC from "RxFuncAdd" and go straight to calling the "xxxLoadFuncs" function for the extension.

    Thanks,

    RickH

     
  • suprhulk

    suprhulk - 2007-01-10

    Logged In: YES
    user_id=1215919
    Originator: YES

    It turns out that this is a defect in ooRexx v311.

    The function RxFuncAdd is failing to register any function that is exported by an extension DLL when running under Windows Vista Ultimate.

    Also, REXXUTIL is not automatically loaded by RXAPI. Any attempt to use any of the REXXUTIL exported functions fails with a "NOT FOUND" error.

    I had to uninstall ooRexx V311 and install ooRexx V301.

    Now RxFuncAdd returns "0" and "SysLoadFuncs" will register all REXXUTIL exported functions.

    As long as you log on with the "Administrator" user id everything runs as it did under WinXPPro. There is a problem when running an external executable via "ADDRESS CMD" if you are not logged on as "Administrator" or even if you "Run as Administrator". I'm going to open another defect for this problem.

    RickH

     
  • Mark Miesfeld

    Mark Miesfeld - 2007-01-10

    Logged In: YES
    user_id=191588
    Originator: NO

    Because of the new UAC (User Access Control) feature on Vista, it is highly likely that current version of ooRexx is not going to behave in the way we would like. There may need to be some changes in how ooRexx is built for Vista.

    I will be setting up a Vista system at the end of the month and will then be able to start investigating this. Until that time, unless one of the other developers gets a Vista system, there won't be a lot of progress made on this.

    I am a little suprised that you say the 3.0.1 version of RexxUtil works. I assume that you checked that the functions actually worked.

    Also, I am interested in getting your help on this. It might be easier to do if you contacted me directly. If you care to, you can email me at miesfeld@acm.org.

     
  • Sebastian Welton

    Logged In: YES
    user_id=240010
    Originator: NO

    The function RxFuncAdd is failing to register any function that is
    exported by an extension DLL when running under Windows Vista Ultimate.

    Also, REXXUTIL is not automatically loaded by RXAPI. Any attempt to use
    any of the REXXUTIL exported functions fails with a "NOT FOUND" error.

    I had to uninstall ooRexx V311 and install ooRexx V301.

    Now RxFuncAdd returns "0" and "SysLoadFuncs" will register all REXXUTIL
    exported functions.

    As long as you log on with the "Administrator" user id everything runs as
    it did under WinXPPro. There is a problem when running an external
    executable via "ADDRESS CMD" if you are not logged on as "Administrator" or
    even if you "Run as Administrator". I'm going to open another defect for
    this problem.

    Installed 3.1.1 on Vista Business. Installed fine, RXAPI started, etc. but REXXUTIL functions will not run. Tried 2.1.3 (the original IBM version with the workbench and workshop) but further problems occurred so went back to 3.1.1. Tried a number of things to see if REXXUTIL could be loaded but no luck. Saw this posting and did everything it states but still the same error. Interesting enough, if you code:

    ret = Rxfuncadd("sysloadfuncs","rexxutil","sysloadfuncs")

    you get an RC=1 which means that the functions are already loaded yet calling a REXXUTIL function gives an error 43 which means it cannot find the function.

    Seb

     
  • Mark Miesfeld

    Mark Miesfeld - 2007-04-11

    Logged In: YES
    user_id=191588
    Originator: NO

    This was a problem in Vista that had nothing to do with the new User Account Control (UAC) but did have to do with the increased security that Vista implements.

    The RexxAPIManager and the RexxAPIService run in two separate processes and communicate through memory mapped files. Vista implements Windows Integrity Control (WIC) which says in essence that in order for an object to act on another object it must have an integrity level greater or equal to that object.

    In Vista most if not all services run with an integrity level of System, which is the highest. All users run at an integrity level lower than that, even Administrators.

    3 of the memory mapped files that RxAPI uses were created unnamed. Access was being gained to them by doing an OpenProcess and DuplicateHandle. Since the process being opened was running at System integrity level, even the full blown Administrator account was denied access on the OpenProcess call. (Administrator runs at High integrity level.) Therefore, RxAPI was never started, which in turn prevented any external functions from being registered.

    The fix was to create all memory mapped files as named memory mapped files. This allows access to them through OpenFileMapping and is the procedure that Microsoft recommends for inter-process communication involving services in Vista.

     
  • Mark Miesfeld

    Mark Miesfeld - 2007-04-25

    Logged In: YES
    user_id=191588
    Originator: NO

    Fixed in 3.1.2.

     

Anonymous
Anonymous

Add attachments
Cancel