On 13 Nov 2025, at 21:26, Rony G. Flatscher <[email protected]> wrote:
Must now understand why manager->manager is NULL.

Maybe Rick could help shed some light on this?


Well...
The attached file shows the problem.
routine=.Routine~newFile(program)   -- create routine object
say "setSecurityManager"
routine~setSecurityManager(.monitoringSupervisor~new)
say "calling routine"
routine~call         -- execute program

ooRexx 5
#0      0x0000000100752534 in SecurityManager::checkRequiresAccess at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/execution/SecurityManager.cpp:323
#1      0x0000000100775998 in PackageManager::loadRequires at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/package/PackageManager.cpp:723
#2      0x00000001007ea7ac in InterpreterInstance::loadRequires at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/runtime/InterpreterInstance.cpp:970
#3      0x00000001006ee6a0 in PackageClass::loadRequires at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/classes/PackageClass.cpp:1323
#4      0x00000001007b3950 in RequiresDirective::install at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/instructions/RequiresDirective.cpp:136
#5      0x00000001006ee3fc in PackageClass::processInstall at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/classes/PackageClass.cpp:1264
#6      0x00000001007436d8 in PackageClass::install at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/classes/PackageClass.hpp:122
#7      0x0000000100737cb0 in RexxCode::install at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/execution/RexxCode.hpp:93
#8      0x00000001007371c4 in RexxActivation::run at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/execution/RexxActivation.cpp:508
#9      0x0000000100744fc0 in RexxCode::call at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/execution/RexxCode.cpp:187
#10     0x0000000100744f08 in RexxCode::call at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/execution/RexxCode.cpp:158
#11     0x00000001006f5948 in RoutineClass::call at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/classes/RoutineClass.cpp:169
#12     0x00000001006ee210 in PackageClass::install at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/classes/PackageClass.cpp:1215
#13     0x00000001007cc624 in LanguageParser::installPackage at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/parser/LanguageParser.cpp:857
#14     0x00000001007cac8c in LanguageParser::generateRoutine at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/parser/LanguageParser.cpp:640
#15     0x00000001007caf64 in LanguageParser::createRoutine at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/parser/LanguageParser.cpp:276
#16     0x00000001007cadf8 in LanguageParser::createRoutine at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/parser/LanguageParser.cpp:249
#17     0x00000001006f66c4 in RoutineClass::newFileRexx at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/classes/RoutineClass.cpp:485
#18     0x0000000100733a94 in CPPCode::run at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/execution/CPPCode.cpp:178
#19     0x00000001006d1788 in MethodClass::run at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/classes/MethodClass.cpp:171
#20     0x00000001006e5408 in RexxObject::messageSend at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/classes/ObjectClass.cpp:899
#21     0x0000000100795728 in ExpressionStack::send at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/expression/ExpressionStack.hpp:80
#22     0x0000000100795520 in RexxExpressionMessage::evaluate at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/expression/ExpressionMessage.cpp:189
#23     0x000000010079a824 in RexxInstructionAssignment::execute at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/instructions/AssignmentInstruction.cpp:129
#24     0x00000001007375b8 in RexxActivation::run at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/execution/RexxActivation.cpp:627
#25     0x0000000100744fc0 in RexxCode::call at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/execution/RexxCode.cpp:187
#26     0x00000001006f5cd8 in RoutineClass::runProgram at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/classes/RoutineClass.cpp:264
#27     0x00000001007899a0 in CallProgramDispatcher::run at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/concurrency/RexxStartDispatcher.cpp:242
#28     0x000000010074a708 in NativeActivation::run at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/execution/NativeActivation.cpp:1641
#29     0x000000010077fab8 in Activity::run at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/concurrency/Activity.cpp:3379
#30     0x000000010071e4c4 in ::CallProgram(RexxThreadContext *, const char *, 
RexxArrayObject) at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/interpreter/api/ThreadContextStubs.cpp:511
#31     0x000000010000236c in RexxThreadContext_::CallProgram at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/api/oorexxapi.h:1001
#32     0x0000000100002028 in main at 
/Users/Shared/local/rexx/oorexx/official/main/trunk/utilities/rexx/platform/unix/rexx.cpp:217
---
Console:
<nothing>

ooRexx 4.2
#0      0x00000001005850f0 in PackageManager::loadRequires at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/package/PackageManager.cpp:702
#1      0x00000001005c4568 in InterpreterInstance::loadRequires at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/runtime/InterpreterInstance.cpp:914
#2      0x00000001005b8580 in RexxSource::loadRequires at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/parser/SourceFile.cpp:6083
#3      0x00000001005afd14 in RexxSource::processInstall at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/parser/SourceFile.cpp:1720
#4      0x0000000100566120 in RexxSource::install [inlined] at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/parser/SourceFile.hpp:284
#5      0x0000000100566110 in RexxCode::install [inlined] at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/execution/RexxCode.hpp:87
#6      0x000000010056610c in RexxActivation::run at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/execution/RexxActivation.cpp:423
#7      0x000000010056d058 in RexxCode::call at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/execution/RexxCode.cpp:91
#8      0x000000010053ef64 in RoutineClass::callRexx at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/classes/RoutineClass.cpp:268
#9      0x0000000100564fa4 in CPPCode::run at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/execution/CPPCode.cpp:121
#10     0x0000000100528918 in RexxMethod::run at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/classes/MethodClass.cpp:324
#11     0x000000010059f09c in RexxExpressionStack::send [inlined] at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/expression/ExpressionStack.hpp:76
#12     0x000000010059f090 in RexxInstructionMessage::execute at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/instructions/MessageInstruction.cpp:227
#13     0x0000000100566350 in RexxActivation::run at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/execution/RexxActivation.cpp:529
#14     0x000000010053f1d8 in RoutineClass::runProgram at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/classes/RoutineClass.cpp:319
#15     0x000000010058e338 in CallProgramDispatcher::run at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/concurrency/RexxStartDispatcher.cpp:237
#16     0x0000000100570620 in RexxNativeActivation::run at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/execution/RexxNativeActivation.cpp:1569
#17     0x0000000100587f74 in RexxActivity::run at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/concurrency/RexxActivity.cpp:3039
#18     0x000000010055dc78 in ::CallProgram(RexxThreadContext *, const char *, 
RexxArrayObject) at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/api/ThreadContextStubs.cpp:494
#19     0x0000000100000c90 in RexxThreadContext_::CallProgram at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/api/oorexxapi.h:849
#20     0x0000000100000a64 in main at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/utilities/rexx/platform/unix/rexx.cpp:170
---
Console:
setSecurityManager
calling routine

ooRexx 4.2
#0      0x000000010053fbc4 in RoutineClass::newFileRexx at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/classes/RoutineClass.cpp:616
#1      0x0000000100565124 in CPPCode::run at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/execution/CPPCode.cpp:148
#2      0x0000000100528918 in RexxMethod::run at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/classes/MethodClass.cpp:324
#3      0x00000001005952b8 in RexxExpressionStack::send [inlined] at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/expression/ExpressionStack.hpp:76
#4      0x00000001005952ac in RexxExpressionMessage::evaluate at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/expression/ExpressionMessage.cpp:137
#5      0x0000000100598890 in RexxInstructionAssignment::execute at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/instructions/AssignmentInstruction.cpp:122
#6      0x0000000100566350 in RexxActivation::run at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/execution/RexxActivation.cpp:529
#7      0x000000010053f1d8 in RoutineClass::runProgram at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/classes/RoutineClass.cpp:319
#8      0x000000010058e338 in CallProgramDispatcher::run at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/concurrency/RexxStartDispatcher.cpp:237
#9      0x0000000100570620 in RexxNativeActivation::run at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/execution/RexxNativeActivation.cpp:1569
#10     0x0000000100587f74 in RexxActivity::run at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/concurrency/RexxActivity.cpp:3039
#11     0x000000010055dc78 in ::CallProgram(RexxThreadContext *, const char *, 
RexxArrayObject) at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/interpreter/api/ThreadContextStubs.cpp:494
#12     0x0000000100000c90 in RexxThreadContext_::CallProgram at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/api/oorexxapi.h:849
#13     0x0000000100000a64 in main at 
/Users/Shared/local/rexx/oorexx/official/main/releases/4.2.0/trunk/utilities/rexx/platform/unix/rexx.cpp:170

Using this code for test
routine=.Routine~newFile(program)   -- create routine object
say "setSecurityManager"
routine~setSecurityManager(.monitoringSupervisor~new)
say "calling routine"
routine~call         -- execute program

Put a breakpoint in PackageManager::loadRequires

ooRexx 5 calls PackageManager::loadRequires during the creation of the routine (RoutineClass::newFileRexx is in the stack).
At that moment, the security manager is not yet assigned.
The console contains no display.

ooRexx 4.2 does not call PackageManager::loadRequires during the creation of the routine (RoutineClass::newFileRexx is not in the stack).
ooRexx 4.2 calls PackageManager::loadRequires when the routine is called (RoutineClass::callRexx is in the stack)
In the console, you see
setSecurityManager
calling routine


_______________________________________________
Oorexx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to