#716 Package loader function called on each RexxCreateInstance()

Rick McGuire
APIs (66)

The show-case archive will be mailed separately by e-mail (it's 1,7MB large):

If a Java program uses different threads to create Rexx interpreter instances, then for each such created Rexx instance the denoted package loader is run as can be seen in the debug output at the very top of the output.

To proceed: just unzip the archive "loaderFunctionBug.zip-zip" (note the ending ".zip-zip"), which will place all files into a subdirectory named "loaderFunctionBug". Then change into this subdirectory and enter the command:

java -cp .;bsf4r_debug.zip RgfTestMany

Here's the readme.txt file which explains how to start the program:
-------------- cut here -------------
- unpack archive

  • run Java program by entering (compiled with Java 6):

    java -cp .;bsf4r_debug.zip RgfTestMany
  • if the BsfLoader runs, the string "/// ===> ===> === > in bsfLoader(), tid=["... gets
    output on the screen

    void RexxEntry bsfLoader (RexxThreadContext *rtc)
    // #if defined(DEBUG1) || defined (DEBUG40)
        #ifdef UNIX
        #else   // WIN32
        fprintf(stderr, "/// ===> ===> === > in bsfLoader(), tid=[%lu], c_rii_ID=[%p] ...\n", (unsigned long) tid, rtc->instance);
    // #endif
        rgfInitCriticalSection();        // Initialize critical section

---rgf, 2009-06-03

P.S.: The unloader ("bsfUnloader()")does not run, but this may be due to something the native
code is doing. Will chase that down, once the termination of multiple threads works
(currently Terminate() will cause a segmentation fault, hence I did not activate that
in the Java program; maybe that is due to wrongly initialized critical section locks,
as the bsfLoader() is called multiple times).
-------------- cut here -------------


  • Oops, forgot to pinpoint to where the "action is":

    BSF4Rexx.cc, line # 5865, function named "Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniRexxCreateInterpreterInstance"

    BSF4Rexx.cc, line # 5765, function named "bsfLoader"



Cancel   Add attachments