Dear all,

I have added som debugging info for my memory bloating problem, please let me know what I can do more to pinpoint the problem.

Please look at the attached file for more info

Anfang der weitergeleiteten Nachricht:

Von: "P.O. Jonsson" <[email protected]>
Betreff: Wtr: [Bsf4oorexx-devel] High memory usage in ooRexx
Datum: 2. Juni 2017 um 17:25:15 MESZ

My apologies for sending the question to the wrong list.

In addition to the above the input is not 40 000 items, that is the top-5 saved, the tip of the iceberg. Input is more like 1-5 million items.

I have enclosed an analysis of the process that have started to go astray, currently using around 25 GB of memory and growing. Hope it helps.

Sampling process 10636 for 3 seconds with 1 millisecond of run time between 
samples
Sampling completed, processing symbols...
Analysis of sampling rexx (pid 10636) every 1 millisecond
Process:         rexx [10636]
Path:            /Library/Frameworks/ooRexx.framework/Versions/A/Commands/rexx
Load Address:    0x10da16000
Identifier:      rexx
Version:         ???
Code Type:       X86-64
Parent Process:  bash [1496]

Date/Time:       2017-06-02 17:08:03.420 +0200
Launch Time:     2017-06-02 10:42:48.879 +0200
OS Version:      Mac OS X 10.12.5 (16F73)
Report Version:  7
Analysis Tool:   /usr/bin/sample
----

Call graph:
    2636 Thread_73086   DispatchQueue_1: com.apple.main-thread  (serial)
      2636 start  (in rexx) + 52  [0x10da18334]
        2636 main  (in rexx) + 1561  [0x10da18959]
          2636 RexxThreadContext_::CallProgram(char const*, _RexxArrayObject*)  
(in rexx) + 70  [0x10da18c06]
            2636 CallProgram  (in librexx.5.0.0.dylib) + 77  [0x10da8330d]
              2636 Activity::run(ActivityDispatcher&)  (in librexx.5.0.0.dylib) 
+ 142  [0x10dae00fe]
                2636 NativeActivation::run(ActivityDispatcher&)  (in 
librexx.5.0.0.dylib) + 115  [0x10daaedb3]
                  2636 CallProgramDispatcher::run()  (in librexx.5.0.0.dylib) + 
325  [0x10dae7115]
                    2636 RoutineClass::runProgram(Activity*, RexxObject**, 
unsigned long, ProtectedObject&)  (in librexx.5.0.0.dylib) + 207  [0x10da5c7df]
                      2636 RexxCode::call(Activity*, RoutineClass*, 
RexxString*, RexxObject**, unsigned long, RexxString*, RexxString*, 
ActivationContext, ProtectedObject&)  (in librexx.5.0.0.dylib) + 180  
[0x10daa9384]
                        2636 RexxActivation::run(RexxObject*, RexxString*, 
RexxObject**, unsigned long, RexxInstruction*, ProtectedObject&)  (in 
librexx.5.0.0.dylib) + 1713  [0x10da9c831]
                          2636 
RexxInstructionAssignment::execute(RexxActivation*, ExpressionStack*)  (in 
librexx.5.0.0.dylib) + 249  [0x10daf8609]
                            2636 
RexxExpressionFunction::evaluate(RexxActivation*, ExpressionStack*)  (in 
librexx.5.0.0.dylib) + 189  [0x10daf2dad]
                              2636 RexxActivation::internalCall(RexxString*, 
RexxInstruction*, RexxObject**, unsigned long, ProtectedObject&)  (in 
librexx.5.0.0.dylib) + 203  [0x10daa2bbb]
                                2636 RexxActivation::run(RexxObject*, 
RexxString*, RexxObject**, unsigned long, RexxInstruction*, ProtectedObject&)  
(in librexx.5.0.0.dylib) + 1713  [0x10da9c831]
                                  2631 
RexxInstructionAssignment::execute(RexxActivation*, ExpressionStack*)  (in 
librexx.5.0.0.dylib) + 249  [0x10daf8609]
                                  + 2622 
RexxBinaryOperator::evaluate(RexxActivation*, ExpressionStack*)  (in 
librexx.5.0.0.dylib) + 146  [0x10daf4372]
                                  + ! 2622 
RexxObject::callOperatorMethod(unsigned long, RexxObject*)  (in 
librexx.5.0.0.dylib) + 139  [0x10da53e8b]
                                  + !   2483 
RexxString::concatBlank(RexxObject*)  (in librexx.5.0.0.dylib) + 109  
[0x10da65d6d]
                                  + !   : 2483 raw_string(unsigned long)  (in 
librexx.5.0.0.dylib) + 21  [0x10da35ba5]
                                  + !   :   2483 RexxString::rawString(unsigned 
long)  (in librexx.5.0.0.dylib) + 40  [0x10da670b8]
                                  + !   :     2483 new_object(unsigned long, 
unsigned long)  (in librexx.5.0.0.dylib) + 39  [0x10da22eb7]
                                  + !   :       2323 
MemoryObject::newObject(unsigned long, unsigned long)  (in librexx.5.0.0.dylib) 
+ 232  [0x10dad5e88]
                                  + !   :       | 2319 
LargeSegmentSet::handleAllocationFailure(unsigned long)  (in 
librexx.5.0.0.dylib) + 47  [0x10dabff0f]
                                  + !   :       | + 2305 
LargeSegmentSet::expandOrCollect(unsigned long)  (in librexx.5.0.0.dylib) + 233 
 [0x10dac00c9]
                                  + !   :       | + ! 2291 
MemoryObject::collect()  (in librexx.5.0.0.dylib) + 132  [0x10dad5034]
                                  + !   :       | + ! : 2267 
MemorySegmentSet::sweep()  (in librexx.5.0.0.dylib) + 426  [0x10dabf91a]
                                  + !   :       | + ! : | 2267 
LargeSegmentSet::addDeadObject(char*, unsigned long)  (in librexx.5.0.0.dylib) 
+ 79  [0x10dabe4ff]
                                  + !   :       | + ! : |   1988 
DeadObjectPool::addSortedBySize(DeadObject*)  (in librexx.5.0.0.dylib) + 50  
[0x10dab85c2]
                                  + !   :       | + ! : |   + 1822 
DeadObject::isReal()  (in librexx.5.0.0.dylib) + 25  [0x10dab8579]
                                  + !   :       | + ! : |   + ! 1822 
ObjectHeader::getObjectSize()  (in librexx.5.0.0.dylib) + 15,0,...  
[0x10da5427f,0x10da54270,...]
                                  + !   :       | + ! : |   + 117 
DeadObject::isReal()  (in librexx.5.0.0.dylib) + 8,32,...  
[0x10dab8568,0x10dab8580,...]
                                  + !   :       | + ! : |   + 49 
DYLD-STUB$$ObjectHeader::getObjectSize()  (in librexx.5.0.0.dylib) + 0  
[0x10db48fa2]
                                  + !   :       | + ! : |   135 
DeadObjectPool::addSortedBySize(DeadObject*)  (in librexx.5.0.0.dylib) + 
72,41,...  [0x10dab85d8,0x10dab85b9,...]
                                  + !   :       | + ! : |   105 
DeadObjectPool::addSortedBySize(DeadObject*)  (in librexx.5.0.0.dylib) + 72  
[0x10dab85d8]
                                  + !   :       | + ! : |   + 45 
DeadObject::getObjectSize()  (in librexx.5.0.0.dylib) + 25  [0x10dab8429]
                                  + !   :       | + ! : |   + ! 45 
ObjectHeader::getObjectSize()  (in librexx.5.0.0.dylib) + 0,8,...  
[0x10da54270,0x10da54278,...]
                                  + !   :       | + ! : |   + 31 
DYLD-STUB$$ObjectHeader::getObjectSize()  (in librexx.5.0.0.dylib) + 0  
[0x10db48fa2]
                                  + !   :       | + ! : |   + 29 
DeadObject::getObjectSize()  (in librexx.5.0.0.dylib) + 0,8,...  
[0x10dab8410,0x10dab8418,...]
                                  + !   :       | + ! : |   27 
DYLD-STUB$$DeadObject::getObjectSize()  (in librexx.5.0.0.dylib) + 0  
[0x10db489ae]
                                  + !   :       | + ! : |   11 
DYLD-STUB$$DeadObject::isReal()  (in librexx.5.0.0.dylib) + 0  [0x10db489c6]
                                  + !   :       | + ! : |   1 
DeadObjectPool::addSortedBySize(DeadObject*)  (in librexx.5.0.0.dylib) + 117  
[0x10dab8605]
                                  + !   :       | + ! : |     1 
DeadObject::insertBefore(DeadObject*)  (in librexx.5.0.0.dylib) + 24  
[0x10dab8628]
                                  + !   :       | + ! : 9 
MemorySegmentSet::sweep()  (in librexx.5.0.0.dylib) + 461  [0x10dabf93d]
                                  + !   :       | + ! : | 9 
MemorySegmentSet::next(MemorySegment*)  (in librexx.5.0.0.dylib) + 29  
[0x10dabd59d]
                                  + !   :       | + ! : |   9 
MemorySegment::isReal()  (in librexx.5.0.0.dylib) + 16  [0x10dabe010]
                                  + !   :       | + ! : 5 
MemorySegmentSet::sweep()  (in librexx.5.0.0.dylib) + 130  [0x10dabf7f2]
                                  + !   :       | + ! : | 5 
RexxInternalObject::isObjectLive(unsigned long)  (in librexx.5.0.0.dylib) + 44  
[0x10dabd3bc]
                                  + !   :       | + ! : |   5 
ObjectHeader::isObjectLive(unsigned long)  (in librexx.5.0.0.dylib) + 20  
[0x10dac0cf4]
                                  + !   :       | + ! : 4 
MemorySegmentSet::sweep()  (in librexx.5.0.0.dylib) + 298  [0x10dabf89a]
                                  + !   :       | + ! : | 4 
RexxInternalObject::isObjectDead(unsigned long)  (in librexx.5.0.0.dylib) + 44  
[0x10dabf99c]
                                  + !   :       | + ! : |   4 
ObjectHeader::isObjectDead(unsigned long)  (in librexx.5.0.0.dylib) + 20  
[0x10dac0f84]
                                  + !   :       | + ! : 3 
MemorySegmentSet::sweep()  (in librexx.5.0.0.dylib) + 242,138,...  
[0x10dabf862,0x10dabf7fa,...]
                                  + !   :       | + ! : 2 
MemorySegmentSet::sweep()  (in librexx.5.0.0.dylib) + 439  [0x10dabf927]
                                  + !   :       | + ! : | 2 
RexxInternalObject::nextObject(unsigned long)  (in librexx.5.0.0.dylib) + 0  
[0x10dabf9b0]
                                  + !   :       | + ! : 1 
MemorySegmentSet::sweep()  (in librexx.5.0.0.dylib) + 260  [0x10dabf874]
                                  + !   :       | + ! :   1 
DYLD-STUB$$RexxInternalObject::getObjectSize()  (in librexx.5.0.0.dylib) + 0  
[0x10db49d46]
                                  + !   :       | + ! 12 
MemoryObject::collect()  (in librexx.5.0.0.dylib) + 96  [0x10dad5010]
                                  + !   :       | + ! : 12 
MemoryObject::markObjects()  (in librexx.5.0.0.dylib) + 45  [0x10dad53ed]
                                  + !   :       | + ! :   9 
MemoryObject::markObjectsMain(RexxInternalObject*)  (in librexx.5.0.0.dylib) + 
227  [0x10dad4cb3]
                                  + !   :       | + ! :   | 1 
DYLD-STUB$$RexxInternalObject::isObjectMarked(unsigned long)  (in 
librexx.5.0.0.dylib) + 0  [0x10db49d70]
                                  + !   :       | + ! :   | 1 
RexxExpressionFunction::live(unsigned long)  (in librexx.5.0.0.dylib) + 25  
[0x10daf29f9]
                                  + !   :       | + ! :   | 1 
RexxInstructionAssignment::live(unsigned long)  (in librexx.5.0.0.dylib) + 55  
[0x10daf8347]
                                  + !   :       | + ! :   | + 1 
RexxInternalObject::isObjectMarked(unsigned long)  (in librexx.5.0.0.dylib) + 
44  [0x10da2330c]
                                  + !   :       | + ! :   | +   1 
ObjectHeader::isObjectMarked(unsigned long)  (in librexx.5.0.0.dylib) + 20  
[0x10da28b94]
                                  + !   :       | + ! :   | 1 
RexxInstructionAssignment::live(unsigned long)  (in librexx.5.0.0.dylib) + 121  
[0x10daf8389]
                                  + !   :       | + ! :   | + 1 
RexxInternalObject::isObjectMarked(unsigned long)  (in librexx.5.0.0.dylib) + 
44  [0x10da2330c]
                                  + !   :       | + ! :   | +   1 
ObjectHeader::isObjectMarked(unsigned long)  (in librexx.5.0.0.dylib) + 20  
[0x10da28b94]
                                  + !   :       | + ! :   | 1 
RexxInstructionBaseDo::live(unsigned long)  (in librexx.5.0.0.dylib) + 55  
[0x10daf8727]
                                  + !   :       | + ! :   | + 1 
RexxInternalObject::isObjectMarked(unsigned long)  (in librexx.5.0.0.dylib) + 
44  [0x10da2330c]
                                  + !   :       | + ! :   | +   1 
ObjectHeader::isObjectMarked(unsigned long)  (in librexx.5.0.0.dylib) + 20  
[0x10da28b94]
                                  + !   :       | + ! :   | 1 
RexxInstructionEnd::live(unsigned long)  (in librexx.5.0.0.dylib) + 55  
[0x10db03f67]
                                  + !   :       | + ! :   | + 1 
RexxInternalObject::isObjectMarked(unsigned long)  (in librexx.5.0.0.dylib) + 
20  [0x10da232f4]
                                  + !   :       | + ! :   | 1 
RexxInstructionEndIf::live(unsigned long)  (in librexx.5.0.0.dylib) + 55  
[0x10db03b37]
                                  + !   :       | + ! :   | + 1 
RexxInternalObject::isObjectMarked(unsigned long)  (in librexx.5.0.0.dylib) + 
44  [0x10da2330c]
                                  + !   :       | + ! :   | +   1 
ObjectHeader::isObjectMarked(unsigned long)  (in librexx.5.0.0.dylib) + 20  
[0x10da28b94]
                                  + !   :       | + ! :   | 1 
RexxInstructionEndIf::live(unsigned long)  (in librexx.5.0.0.dylib) + 187  
[0x10db03bbb]
                                  + !   :       | + ! :   | + 1 
RexxInternalObject::isObjectMarked(unsigned long)  (in librexx.5.0.0.dylib) + 
44  [0x10da2330c]
                                  + !   :       | + ! :   | +   1 
ObjectHeader::isObjectMarked(unsigned long)  (in librexx.5.0.0.dylib) + 20  
[0x10da28b94]
                                  + !   :       | + ! :   | 1 
RexxObject::live(unsigned long)  (in librexx.5.0.0.dylib) + 55  [0x10da4cd77]
                                  + !   :       | + ! :   |   1 
RexxInternalObject::isObjectMarked(unsigned long)  (in librexx.5.0.0.dylib) + 
44  [0x10da2330c]
                                  + !   :       | + ! :   |     1 
ObjectHeader::isObjectMarked(unsigned long)  (in librexx.5.0.0.dylib) + 20  
[0x10da28b94]
                                  + !   :       | + ! :   1 
MemoryObject::markObjectsMain(RexxInternalObject*)  (in librexx.5.0.0.dylib) + 
151  [0x10dad4c67]
                                  + !   :       | + ! :   | 1 
RexxInternalObject::isObjectMarked(unsigned long)  (in librexx.5.0.0.dylib) + 
44  [0x10da2330c]
                                  + !   :       | + ! :   |   1 
ObjectHeader::isObjectMarked(unsigned long)  (in librexx.5.0.0.dylib) + 16  
[0x10da28b90]
                                  + !   :       | + ! :   1 
MemoryObject::markObjectsMain(RexxInternalObject*)  (in librexx.5.0.0.dylib) + 
236  [0x10dad4cbc]
                                  + !   :       | + ! :   | 1 
MemoryObject::popLiveStack()  (in librexx.5.0.0.dylib) + 25  [0x10dad4de9]
                                  + !   :       | + ! :   |   1 
LiveStack::pop()  (in librexx.5.0.0.dylib) + 64  [0x10dac3a30]
                                  + !   :       | + ! :   1 
MemoryObject::markObjectsMain(RexxInternalObject*)  (in librexx.5.0.0.dylib) + 
125  [0x10dad4c4d]
                                  + !   :       | + ! 2 MemoryObject::collect() 
 (in librexx.5.0.0.dylib) + 114  [0x10dad5022]
                                  + !   :       | + !   1 
MemorySegmentSet::sweep()  (in librexx.5.0.0.dylib) + 200  [0x10dabf838]
                                  + !   :       | + !   | 1 
RexxInternalObject::nextObject()  (in librexx.5.0.0.dylib) + 8  [0x10dabd368]
                                  + !   :       | + !   1 
MemorySegmentSet::sweep()  (in librexx.5.0.0.dylib) + 216  [0x10dabf848]
                                  + !   :       | + 8 
LargeSegmentSet::expandOrCollect(unsigned long)  (in librexx.5.0.0.dylib) + 113 
 [0x10dac0051]
                                  + !   :       | + ! 6 
MemorySegmentSet::largestActiveSegment()  (in librexx.5.0.0.dylib) + 44  
[0x10dac06cc]
                                  + !   :       | + ! : 6 
MemorySegment::isReal()  (in librexx.5.0.0.dylib) + 16  [0x10dabe010]
                                  + !   :       | + ! 2 
MemorySegmentSet::largestActiveSegment()  (in librexx.5.0.0.dylib) + 113,105  
[0x10dac0711,0x10dac0709]
                                  + !   :       | + 6 
LargeSegmentSet::expandOrCollect(unsigned long)  (in librexx.5.0.0.dylib) + 249 
 [0x10dac00d9]
                                  + !   :       | +   6 
MemorySegmentSet::mergeSegments(unsigned long)  (in librexx.5.0.0.dylib) + 35  
[0x10dac0223]
                                  + !   :       | +     5 
MemorySegmentSet::largestActiveSegment()  (in librexx.5.0.0.dylib) + 44  
[0x10dac06cc]
                                  + !   :       | +     : 5 
MemorySegment::isReal()  (in librexx.5.0.0.dylib) + 16  [0x10dabe010]
                                  + !   :       | +     1 
MemorySegmentSet::largestActiveSegment()  (in librexx.5.0.0.dylib) + 113  
[0x10dac0711]
                                  + !   :       | 4 
LargeSegmentSet::handleAllocationFailure(unsigned long)  (in 
librexx.5.0.0.dylib) + 60  [0x10dabff1c]
                                  + !   :       |   4 
LargeSegmentSet::findObject(unsigned long)  (in librexx.5.0.0.dylib) + 29  
[0x10dabfe3d]
                                  + !   :       |     4 
LargeSegmentSet::allocateObject(unsigned long)  (in librexx.5.0.0.dylib) + 46  
[0x10dabfe7e]
                                  + !   :       |       4 
DeadObjectPool::findBestFit(unsigned long)  (in librexx.5.0.0.dylib) + 198  
[0x10dab83c6]
                                  + !   :       |         4 
DeadObject::getObjectSize()  (in librexx.5.0.0.dylib) + 25  [0x10dab8429]
                                  + !   :       |           4 
ObjectHeader::getObjectSize()  (in librexx.5.0.0.dylib) + 15  [0x10da5427f]
                                  + !   :       82 
MemoryObject::newObject(unsigned long, unsigned long)  (in librexx.5.0.0.dylib) 
+ 309  [0x10dad5ed5]
                                  + !   :       | 82 
RexxObject::initializeNewObject(unsigned long, void*, RexxBehaviour*)  (in 
librexx.5.0.0.dylib) + 95  [0x10dad5f5f]
                                  + !   :       |   82 
RexxInternalObject::clearObject()  (in librexx.5.0.0.dylib) + 52  [0x10da71e84]
                                  + !   :       |     82 
_platform_bzero$VARIANT$Base  (in libsystem_platform.dylib) + 51,59,...  
[0x7fff8eb22ca3,0x7fff8eb22cab,...]
                                  + !   :       77 
MemoryObject::newObject(unsigned long, unsigned long)  (in librexx.5.0.0.dylib) 
+ 195  [0x10dad5e63]
                                  + !   :       | 64 
LargeSegmentSet::allocateObject(unsigned long)  (in librexx.5.0.0.dylib) + 46  
[0x10dabfe7e]
                                  + !   :       | + 61 
DeadObjectPool::findBestFit(unsigned long)  (in librexx.5.0.0.dylib) + 198  
[0x10dab83c6]
                                  + !   :       | + ! 59 
DeadObject::getObjectSize()  (in librexx.5.0.0.dylib) + 25  [0x10dab8429]
                                  + !   :       | + ! : 59 
ObjectHeader::getObjectSize()  (in librexx.5.0.0.dylib) + 15  [0x10da5427f]
                                  + !   :       | + ! 2 
DeadObject::getObjectSize()  (in librexx.5.0.0.dylib) + 25,8  
[0x10dab8429,0x10dab8418]
                                  + !   :       | + 3 
DeadObjectPool::findBestFit(unsigned long)  (in librexx.5.0.0.dylib) + 
137,159,...  [0x10dab8389,0x10dab839f,...]
                                  + !   :       | 13 
LargeSegmentSet::allocateObject(unsigned long)  (in librexx.5.0.0.dylib) + 114  
[0x10dabfec2]
                                  + !   :       |   13 
MemorySegmentSet::splitDeadObject(DeadObject*, unsigned long, unsigned long)  
(in librexx.5.0.0.dylib) + 127  [0x10dabfa5f]
                                  + !   :       |     13 
LargeSegmentSet::addDeadObject(char*, unsigned long)  (in librexx.5.0.0.dylib) 
+ 79  [0x10dabe4ff]
                                  + !   :       |       13 
DeadObjectPool::addSortedBySize(DeadObject*)  (in librexx.5.0.0.dylib) + 50  
[0x10dab85c2]
                                  + !   :       |         13 
DeadObject::isReal()  (in librexx.5.0.0.dylib) + 25  [0x10dab8579]
                                  + !   :       |           13 
ObjectHeader::getObjectSize()  (in librexx.5.0.0.dylib) + 15  [0x10da5427f]
                                  + !   :       1 
MemoryObject::newObject(unsigned long, unsigned long)  (in librexx.5.0.0.dylib) 
+ 332  [0x10dad5eec]
                                  + !   139 
RexxString::concatBlank(RexxObject*)  (in librexx.5.0.0.dylib) + 151  
[0x10da65d97]
                                  + !     139 
RexxString::StringBuilder::append(char const*, unsigned long)  (in 
librexx.5.0.0.dylib) + 47  [0x10da65acf]
                                  + !       139 
_platform_memmove$VARIANT$Nehalem  (in libsystem_platform.dylib) + 254,224,...  
[0x7fff8eb1e0de,0x7fff8eb1e0c0,...]
                                  + 8 
RexxExpressionMessage::evaluate(RexxActivation*, ExpressionStack*)  (in 
librexx.5.0.0.dylib) + 281  [0x10daf3779]
                                  + ! 8 ExpressionStack::send(RexxString*, 
unsigned long, ProtectedObject&)  (in librexx.5.0.0.dylib) + 104  [0x10daf39b8]
                                  + !   7 RexxObject::messageSend(RexxString*, 
RexxObject**, unsigned long, ProtectedObject&)  (in librexx.5.0.0.dylib) + 283  
[0x10da4e24b]
                                  + !   : 6 MethodClass::run(Activity*, 
RexxObject*, RexxString*, RexxObject**, unsigned long, ProtectedObject&)  (in 
librexx.5.0.0.dylib) + 115  [0x10da3ae93]
                                  + !   : | 3 CPPCode::run(Activity*, 
MethodClass*, RexxObject*, RexxString*, RexxObject**, unsigned long, 
ProtectedObject&)  (in librexx.5.0.0.dylib) + 1150  [0x10da98b0e]
                                  + !   : | + 3 
RexxString::wordPos(RexxString*, RexxInteger*)  (in librexx.5.0.0.dylib) + 69  
[0x10da6ccf5]
                                  + !   : | +   3 StringUtil::wordPos(char 
const*, unsigned long, RexxString*, RexxInteger*)  (in librexx.5.0.0.dylib) + 
160  [0x10da7dcd0]
                                  + !   : | +     3 StringUtil::wordCount(char 
const*, unsigned long)  (in librexx.5.0.0.dylib) + 74  [0x10da7d0da]
                                  + !   : | +       1 
RexxString::WordIterator::next()  (in librexx.5.0.0.dylib) + 71  [0x10da40567]
                                  + !   : | +       ! 1 
RexxString::WordIterator::skipBlanks(char const*&, unsigned long&)  (in 
librexx.5.0.0.dylib) + 91  [0x10da408cb]
                                  + !   : | +       1 
RexxString::WordIterator::next()  (in librexx.5.0.0.dylib) + 141  [0x10da405ad]
                                  + !   : | +       ! 1 
RexxString::WordIterator::skipNonBlanks(char const*&, unsigned long&)  (in 
librexx.5.0.0.dylib) + 124  [0x10da4097c]
                                  + !   : | +       1 
RexxString::WordIterator::next()  (in librexx.5.0.0.dylib) + 111  [0x10da4058f]
                                  + !   : | 3 NativeMethod::run(Activity*, 
MethodClass*, RexxObject*, RexxString*, RexxObject**, unsigned long, 
ProtectedObject&)  (in librexx.5.0.0.dylib) + 209  [0x10dab23f1]
                                  + !   : |   3 
NativeActivation::run(MethodClass*, NativeMethod*, RexxObject*, RexxString*, 
RexxObject**, unsigned long, ProtectedObject&)  (in librexx.5.0.0.dylib) + 588  
[0x10daadb7c]
                                  + !   : |     3 stream_linein  (in 
librexx.5.0.0.dylib) + 60  [0x10db420ec]
                                  + !   : |       2 
stream_linein_impl(RexxMethodContext_*, void*, long long, unsigned long)  (in 
librexx.5.0.0.dylib) + 231  [0x10db42207]
                                  + !   : |       ! 2 StreamInfo::linein(bool, 
long long, unsigned long)  (in librexx.5.0.0.dylib) + 290  [0x10db420a2]
                                  + !   : |       !   2 
StreamInfo::readVariableLine()  (in librexx.5.0.0.dylib) + 185  [0x10db41639]
                                  + !   : |       !     2 
RexxMethodContext_::NewString(char const*, unsigned long)  (in 
librexx.5.0.0.dylib) + 40  [0x10da5df58]
                                  + !   : |       !       2 
RexxThreadContext_::NewString(char const*, unsigned long)  (in 
librexx.5.0.0.dylib) + 70  [0x10da5e7a6]
                                  + !   : |       !         2 NewString  (in 
librexx.5.0.0.dylib) + 68  [0x10da85734]
                                  + !   : |       !           2 
ApiContext::ret(RexxInternalObject*)  (in librexx.5.0.0.dylib) + 33  
[0x10da7e911]
                                  + !   : |       !             1 
NativeActivation::createLocalReference(RexxInternalObject*)  (in 
librexx.5.0.0.dylib) + 68  [0x10daac964]
                                  + !   : |       !             : 1 
new_identity_table()  (in librexx.5.0.0.dylib) + 49  [0x10da8d041]
                                  + !   : |       !             :   1 
IdentityTable::IdentityTable(unsigned long)  (in librexx.5.0.0.dylib) + 29  
[0x10da8ec8d]
                                  + !   : |       !             :     1 
IdentityTable::IdentityTable(unsigned long)  (in librexx.5.0.0.dylib) + 39  
[0x10da8ecc7]
                                  + !   : |       !             :       1 
IdentityHashCollection::IdentityHashCollection(unsigned long)  (in 
librexx.5.0.0.dylib) + 55  [0x10da710a7]
                                  + !   : |       !             :         1 
HashCollection::initialize(unsigned long)  (in librexx.5.0.0.dylib) + 90  
[0x10da6f81a]
                                  + !   : |       !             :           1 
IdentityHashCollection::allocateContents(unsigned long, unsigned long)  (in 
librexx.5.0.0.dylib) + 39  [0x10da711f7]
                                  + !   : |       !             :             1 
IdentityHashContents::operator new(unsigned long, unsigned long)  (in 
librexx.5.0.0.dylib) + 58  [0x10da71cea]
                                  + !   : |       !             :               
1 new_object(unsigned long, unsigned long)  (in librexx.5.0.0.dylib) + 39  
[0x10da22eb7]
                                  + !   : |       !             :               
  1 MemoryObject::newObject(unsigned long, unsigned long)  (in 
librexx.5.0.0.dylib) + 114  [0x10dad5e12]
                                  + !   : |       !             :               
    1 NormalSegmentSet::allocateObject(unsigned long)  (in librexx.5.0.0.dylib) 
+ 312  [0x10dabfc88]
                                  + !   : |       !             :               
      1 DeadObjectPool::findFit(unsigned long, unsigned long*)  (in 
librexx.5.0.0.dylib) + 102  [0x10dac1076]
                                  + !   : |       !             :               
        1 DeadObject::remove()  (in librexx.5.0.0.dylib) + 24  [0x10dab8448]
                                  + !   : |       !             1 
NativeActivation::createLocalReference(RexxInternalObject*)  (in 
librexx.5.0.0.dylib) + 164  [0x10daac9c4]
                                  + !   : |       !               1 
HashCollection::put(RexxInternalObject*, RexxInternalObject*)  (in 
librexx.5.0.0.dylib) + 82  [0x10da70292]
                                  + !   : |       1 
stream_linein_impl(RexxMethodContext_*, void*, long long, unsigned long)  (in 
librexx.5.0.0.dylib) + 77  [0x10db4216d]
                                  + !   : |         1 
checkStreamInfo(RexxMethodContext_*, void*, _RexxObjectPtr*)  (in 
librexx.5.0.0.dylib) + 88  [0x10db3eec8]
                                  + !   : 1 MethodClass::run(Activity*, 
RexxObject*, RexxString*, RexxObject**, unsigned long, ProtectedObject&)  (in 
librexx.5.0.0.dylib) + 51  [0x10da3ae53]
                                  + !   1 RexxObject::messageSend(RexxString*, 
RexxObject**, unsigned long, ProtectedObject&)  (in librexx.5.0.0.dylib) + 59  
[0x10da4e16b]
                                  + 1 
RexxBinaryOperator::evaluate(RexxActivation*, ExpressionStack*)  (in 
librexx.5.0.0.dylib) + 118  [0x10daf4356]
                                  +   1 
RexxExpressionMessage::evaluate(RexxActivation*, ExpressionStack*)  (in 
librexx.5.0.0.dylib) + 281  [0x10daf3779]
                                  +     1 ExpressionStack::send(RexxString*, 
unsigned long, ProtectedObject&)  (in librexx.5.0.0.dylib) + 104  [0x10daf39b8]
                                  +       1 
RexxObject::messageSend(RexxString*, RexxObject**, unsigned long, 
ProtectedObject&)  (in librexx.5.0.0.dylib) + 283  [0x10da4e24b]
                                  +         1 MethodClass::run(Activity*, 
RexxObject*, RexxString*, RexxObject**, unsigned long, ProtectedObject&)  (in 
librexx.5.0.0.dylib) + 115  [0x10da3ae93]
                                  +           1 CPPCode::run(Activity*, 
MethodClass*, RexxObject*, RexxString*, RexxObject**, unsigned long, 
ProtectedObject&)  (in librexx.5.0.0.dylib) + 958  [0x10da98a4e]
                                  +             1 
RexxString::word(RexxInteger*)  (in librexx.5.0.0.dylib) + 61  [0x10da6cbfd]
                                  +               1 StringUtil::word(char 
const*, unsigned long, RexxInteger*)  (in librexx.5.0.0.dylib) + 167  
[0x10da7d9b7]
                                  +                 1 new_string(char const*, 
unsigned long)  (in librexx.5.0.0.dylib) + 29  [0x10da28ffd]
                                  +                   1 
RexxString::newString(char const*, unsigned long)  (in librexx.5.0.0.dylib) + 
47  [0x10da66fdf]
                                  +                     1 new_object(unsigned 
long, unsigned long)  (in librexx.5.0.0.dylib) + 39  [0x10da22eb7]
                                  +                       1 
MemoryObject::newObject(unsigned long, unsigned long)  (in librexx.5.0.0.dylib) 
+ 114  [0x10dad5e12]
                                  +                         1 
NormalSegmentSet::allocateObject(unsigned long)  (in librexx.5.0.0.dylib) + 109 
 [0x10dabfbbd]
                                  +                           1 
DeadObjectPool::getFirstSingle()  (in librexx.5.0.0.dylib) + 56  [0x10dac0fd8]
                                  3 
RexxInstructionEnd::execute(RexxActivation*, ExpressionStack*)  (in 
librexx.5.0.0.dylib) + 228  [0x10db04184]
                                  + 3 
RexxInstructionBaseDo::reExecute(RexxActivation*, ExpressionStack*, DoBlock*)  
(in librexx.5.0.0.dylib) + 128  [0x10daf8bf0]
                                  +   3 
RexxInstructionDoWhile::iterate(RexxActivation*, ExpressionStack*, DoBlock*, 
bool)  (in librexx.5.0.0.dylib) + 56  [0x10db02ec8]
                                  +     3 
WhileUntilLoop::checkWhile(RexxActivation*, ExpressionStack*)  (in 
librexx.5.0.0.dylib) + 69  [0x10dafd455]
                                  +       3 
RexxBinaryOperator::evaluate(RexxActivation*, ExpressionStack*)  (in 
librexx.5.0.0.dylib) + 66  [0x10daf4322]
                                  +         3 
RexxExpressionMessage::evaluate(RexxActivation*, ExpressionStack*)  (in 
librexx.5.0.0.dylib) + 281  [0x10daf3779]
                                  +           3 
ExpressionStack::send(RexxString*, unsigned long, ProtectedObject&)  (in 
librexx.5.0.0.dylib) + 104  [0x10daf39b8]
                                  +             3 
RexxObject::messageSend(RexxString*, RexxObject**, unsigned long, 
ProtectedObject&)  (in librexx.5.0.0.dylib) + 283  [0x10da4e24b]
                                  +               3 MethodClass::run(Activity*, 
RexxObject*, RexxString*, RexxObject**, unsigned long, ProtectedObject&)  (in 
librexx.5.0.0.dylib) + 115  [0x10da3ae93]
                                  +                 3 
NativeMethod::run(Activity*, MethodClass*, RexxObject*, RexxString*, 
RexxObject**, unsigned long, ProtectedObject&)  (in librexx.5.0.0.dylib) + 209  
[0x10dab23f1]
                                  +                   2 
NativeActivation::run(MethodClass*, NativeMethod*, RexxObject*, RexxString*, 
RexxObject**, unsigned long, ProtectedObject&)  (in librexx.5.0.0.dylib) + 588  
[0x10daadb7c]
                                  +                   ! 2 stream_lines  (in 
librexx.5.0.0.dylib) + 52  [0x10db42824]
                                  +                   !   2 
stream_lines_impl(RexxMethodContext_*, void*, char const*)  (in 
librexx.5.0.0.dylib) + 212  [0x10db42924]
                                  +                   !     2 
StreamInfo::lines(bool)  (in librexx.5.0.0.dylib) + 360  [0x10db42698]
                                  +                   !       2 
StreamInfo::size()  (in librexx.5.0.0.dylib) + 32  [0x10db3f4a0]
                                  +                   !         2 
SysFile::getSize(long long&)  (in librexx.5.0.0.dylib) + 78  [0x10db3879e]
                                  +                   !           2 
fstat$INODE64  (in libsystem_kernel.dylib) + 10  [0x7fff8ea3e9be]
                                  +                   1 
NativeActivation::run(MethodClass*, NativeMethod*, RexxObject*, RexxString*, 
RexxObject**, unsigned long, ProtectedObject&)  (in librexx.5.0.0.dylib) + 206  
[0x10daad9fe]
                                  +                     1 
NativeCode::getSecurityManager()  (in librexx.5.0.0.dylib) + 44  [0x10dab208c]
                                  +                       1 
PackageClass::getSecurityManager()  (in librexx.5.0.0.dylib) + 16  [0x10daa77d0]
                                  2 
RexxInstructionAssignment::execute(RexxActivation*, ExpressionStack*)  (in 
librexx.5.0.0.dylib) + 266  [0x10daf861a]
                                    2 
RexxCompoundVariable::assign(RexxActivation*, RexxObject*)  (in 
librexx.5.0.0.dylib) + 59  [0x10daf1f1b]
                                      2 
RexxActivation::assignLocalCompoundVariable(RexxString*, unsigned long, 
RexxInternalObject**, unsigned long, RexxObject*)  (in librexx.5.0.0.dylib) + 
136  [0x10daa6be8]
                                        2 
RexxActivation::getLocalStem(RexxString*, unsigned long)  (in 
librexx.5.0.0.dylib) + 37  [0x10daa6415]
                                          2 
RexxActivation::getLocalStemVariable(RexxString*, unsigned long)  (in 
librexx.5.0.0.dylib) + 107  [0x10daa8aeb]
                                            1 
DYLD-STUB$$VariableDictionary::getStemVariable(RexxString*)  (in 
librexx.5.0.0.dylib) + 0  [0x10db49fb0]
                                            1 
RexxLocalVariables::lookupStemVariable(RexxString*, unsigned long)  (in 
librexx.5.0.0.dylib) + 217  [0x10daaa889]
                                              1 
RexxLocalVariables::autoExpose()  (in librexx.5.0.0.dylib) + 0  [0x10daaa6b0]

Total number in stack (recursive counted multiple, when >=5):
        7       ObjectHeader::isObjectMarked(unsigned long)  (in 
librexx.5.0.0.dylib) + 0  [0x10da28b80]
        7       RexxInternalObject::isObjectMarked(unsigned long)  (in 
librexx.5.0.0.dylib) + 44  [0x10da2330c]
        5       ObjectHeader::getObjectSize()  (in librexx.5.0.0.dylib) + 0  
[0x10da54270]

Sort by top of stack, same collapsed (when >= 5):
        ObjectHeader::getObjectSize()  (in librexx.5.0.0.dylib)        1943
        _platform_memmove$VARIANT$Nehalem  (in libsystem_platform.dylib)        
139
        DeadObjectPool::addSortedBySize(DeadObject*)  (in librexx.5.0.0.dylib)  
      135
        DeadObject::isReal()  (in librexx.5.0.0.dylib)        117
        _platform_bzero$VARIANT$Base  (in libsystem_platform.dylib)        82
        DYLD-STUB$$ObjectHeader::getObjectSize()  (in librexx.5.0.0.dylib)      
  80
        DeadObject::getObjectSize()  (in librexx.5.0.0.dylib)        31
        DYLD-STUB$$DeadObject::getObjectSize()  (in librexx.5.0.0.dylib)        
27
        MemorySegment::isReal()  (in librexx.5.0.0.dylib)        20
        DYLD-STUB$$DeadObject::isReal()  (in librexx.5.0.0.dylib)        11
        ObjectHeader::isObjectMarked(unsigned long)  (in librexx.5.0.0.dylib)   
     7
        ObjectHeader::isObjectLive(unsigned long)  (in librexx.5.0.0.dylib)     
   5

Binary Images:
       0x10da16000 -        0x10da18ff7 +rexx (???) 
<273D3FF5-5EB0-30E9-B692-414263389BDD> /usr/local/bin/rexx
       0x10da20000 -        0x10dbbdff7 +librexx.5.0.0.dylib (5) 
<C8B30294-5785-3944-A330-469F64CE7E04> /usr/local/lib/librexx.5.0.0.dylib
       0x10dcb6000 -        0x10dcd0ff7 +librexxapi.5.0.0.dylib (5) 
<C231C850-E3AF-357B-83DE-2D99BD068CA4> /usr/local/lib/librexxapi.5.0.0.dylib
       0x11090f000 -        0x11091fff7 +librexxutil.dylib (5) 
<AD848F33-2A52-34FE-BC64-E1D039831B2C> /usr/local/lib/librexxutil.dylib
       0x114fbb000 -        0x114ff8dc7  dyld (0.0 - ???) 
<322C06B7-8878-311D-888C-C8FD2CA96FF3> /usr/lib/dyld
    0x7fff8d2f2000 -     0x7fff8d2f3ffb  libSystem.B.dylib (1238.60.2) 
<FC9E9F13-3B18-305C-BE0A-97C7843652B0> /usr/lib/libSystem.B.dylib
    0x7fff8d4a5000 -     0x7fff8d4fbff7  libc++.1.dylib (307.5) 
<0B43BB5D-E6EB-3464-8DE9-B41AC8ED9D1C> /usr/lib/libc++.1.dylib
    0x7fff8d4fc000 -     0x7fff8d526fff  libc++abi.dylib (307.3) 
<30199352-88BF-30BD-8CFF-2A4FBE247523> /usr/lib/libc++abi.dylib
    0x7fff8e019000 -     0x7fff8e3eebc7  libobjc.A.dylib (709) 
<54CD8D1A-5C98-3559-B13A-932B3D3DD338> /usr/lib/libobjc.A.dylib
    0x7fff8e652000 -     0x7fff8e6a2fff  libstdc++.6.dylib (104.1) 
<A980E08C-A511-3D19-9881-1D79B7CFF2BA> /usr/lib/libstdc++.6.dylib
    0x7fff8e833000 -     0x7fff8e837ff7  libcache.dylib (79) 
<093A4DAB-8385-3D47-A350-E20CB7CCF7BF> /usr/lib/system/libcache.dylib
    0x7fff8e838000 -     0x7fff8e842fff  libcommonCrypto.dylib (60092.50.5) 
<8A64D1B0-C70E-385C-92F0-E669079FDA90> /usr/lib/system/libcommonCrypto.dylib
    0x7fff8e843000 -     0x7fff8e84afff  libcompiler_rt.dylib (62) 
<55D47421-772A-32AB-B529-1A46C2F43B4D> /usr/lib/system/libcompiler_rt.dylib
    0x7fff8e84b000 -     0x7fff8e853fff  libcopyfile.dylib (138) 
<819BEA3C-DF11-3E3D-A1A1-5A51C5BF1961> /usr/lib/system/libcopyfile.dylib
    0x7fff8e854000 -     0x7fff8e8d7fdf  libcorecrypto.dylib (442.50.19) 
<65D7165E-2E71-335D-A2D6-33F78E2DF0C1> /usr/lib/system/libcorecrypto.dylib
    0x7fff8e8d8000 -     0x7fff8e909fff  libdispatch.dylib (703.50.37) 
<6582BAD6-ED27-3B30-B620-90B1C5A4AE3C> /usr/lib/system/libdispatch.dylib
    0x7fff8e90a000 -     0x7fff8e90fffb  libdyld.dylib (433.5) 
<EC3D88D2-3D40-3274-8E26-362C2D7352C8> /usr/lib/system/libdyld.dylib
    0x7fff8e910000 -     0x7fff8e910ffb  libkeymgr.dylib (28) 
<7AA011A9-DC21-3488-BF73-3B5B14D1FDD6> /usr/lib/system/libkeymgr.dylib
    0x7fff8e91e000 -     0x7fff8e91efff  liblaunch.dylib (972.60.2) 
<D3306CFF-58AA-3C90-B06C-B70E80E60C5B> /usr/lib/system/liblaunch.dylib
    0x7fff8e91f000 -     0x7fff8e924ff3  libmacho.dylib (898) 
<17D5D855-F6C3-3B04-B680-E9BF02EF8AED> /usr/lib/system/libmacho.dylib
    0x7fff8e925000 -     0x7fff8e927ff3  libquarantine.dylib (85.50.1) 
<12448CC2-378E-35F3-BE33-9DC395A5B970> /usr/lib/system/libquarantine.dylib
    0x7fff8e928000 -     0x7fff8e929ffb  libremovefile.dylib (45) 
<38D4CB9C-10CD-30D3-8B7B-A515EC75FE85> /usr/lib/system/libremovefile.dylib
    0x7fff8e92a000 -     0x7fff8e942ff7  libsystem_asl.dylib (349.50.5) 
<096E4228-3B7C-30A6-8B13-EC909A64499A> /usr/lib/system/libsystem_asl.dylib
    0x7fff8e943000 -     0x7fff8e943ff7  libsystem_blocks.dylib (67) 
<10DC5404-73AB-35B3-A277-A8AFECB476EB> /usr/lib/system/libsystem_blocks.dylib
    0x7fff8e944000 -     0x7fff8e9d1fef  libsystem_c.dylib (1158.50.2) 
<E5AE5244-7D0C-36AC-8BB6-C7AE7EA52A4B> /usr/lib/system/libsystem_c.dylib
    0x7fff8e9d2000 -     0x7fff8e9d5ffb  libsystem_configuration.dylib 
(888.60.2) <BECC01A2-CA8D-31E6-BCDF-D452965FA976> 
/usr/lib/system/libsystem_configuration.dylib
    0x7fff8e9d6000 -     0x7fff8e9d9fff  libsystem_coreservices.dylib (41.4) 
<7D26DE79-B424-3450-85E1-F7FAB32714AB> 
/usr/lib/system/libsystem_coreservices.dylib
    0x7fff8e9da000 -     0x7fff8e9f2fff  libsystem_coretls.dylib (121.50.4) 
<EC6FCF07-DCFB-3A03-9CC9-6DD3709974C6> /usr/lib/system/libsystem_coretls.dylib
    0x7fff8e9f3000 -     0x7fff8e9f9fff  libsystem_dnssd.dylib (765.50.9) 
<CC960215-0B1B-3822-A13A-3DDE96FA796F> /usr/lib/system/libsystem_dnssd.dylib
    0x7fff8e9fa000 -     0x7fff8ea23ff7  libsystem_info.dylib (503.50.4) 
<611DB84C-BF70-3F92-8702-B9F28A900920> /usr/lib/system/libsystem_info.dylib
    0x7fff8ea24000 -     0x7fff8ea46ff7  libsystem_kernel.dylib (3789.60.24) 
<6E9E485F-91F6-36B7-A125-AE91DC978BCC> /usr/lib/system/libsystem_kernel.dylib
    0x7fff8ea47000 -     0x7fff8ea8efe7  libsystem_m.dylib (3121.6) 
<86D499B5-BBDC-3D3B-8A4E-97AE8E6672A4> /usr/lib/system/libsystem_m.dylib
    0x7fff8ea8f000 -     0x7fff8eaadff7  libsystem_malloc.dylib (116.50.8) 
<A3D15F17-99A6-3367-8C7E-4280E8619C95> /usr/lib/system/libsystem_malloc.dylib
    0x7fff8eaae000 -     0x7fff8eb07ffb  libsystem_network.dylib (856.60.1) 
<369D0221-56CA-3C3E-9EDE-94B41CAE77B7> /usr/lib/system/libsystem_network.dylib
    0x7fff8eb08000 -     0x7fff8eb11ff3  libsystem_networkextension.dylib 
(563.60.2) <B021F2B3-8A75-3633-ABB0-FC012B8E9B0C> 
/usr/lib/system/libsystem_networkextension.dylib
    0x7fff8eb12000 -     0x7fff8eb1bff3  libsystem_notify.dylib (165.20.1) 
<B8160190-A069-3B3A-BDF6-2AA408221FAE> /usr/lib/system/libsystem_notify.dylib
    0x7fff8eb1c000 -     0x7fff8eb24fe7  libsystem_platform.dylib (126.50.8) 
<897462FD-B318-321B-A554-E61982630F7E> /usr/lib/system/libsystem_platform.dylib
    0x7fff8eb25000 -     0x7fff8eb2fff7  libsystem_pthread.dylib (218.60.3) 
<B8FB5E20-3295-39E2-B5EB-B464D1D4B104> /usr/lib/system/libsystem_pthread.dylib
    0x7fff8eb30000 -     0x7fff8eb33ff7  libsystem_sandbox.dylib (592.60.1) 
<DC780631-BD23-36B1-9376-668619E18D25> /usr/lib/system/libsystem_sandbox.dylib
    0x7fff8eb34000 -     0x7fff8eb35ff3  libsystem_secinit.dylib (24.50.4) 
<F78B847B-3565-3E4B-98A6-F7AD40392E2D> /usr/lib/system/libsystem_secinit.dylib
    0x7fff8eb36000 -     0x7fff8eb3dffb  libsystem_symptoms.dylib (532.50.47) 
<3390E07C-C1CE-348F-ADBD-2C5440B45EAA> /usr/lib/system/libsystem_symptoms.dylib
    0x7fff8eb3e000 -     0x7fff8eb51ff7  libsystem_trace.dylib (518.60.2) 
<6B145B10-5874-3E89-90CD-D370DB475BA1> /usr/lib/system/libsystem_trace.dylib
    0x7fff8eb52000 -     0x7fff8eb57ffb  libunwind.dylib (35.3) 
<3D50D8A8-C460-334D-A519-2DA841102C6B> /usr/lib/system/libunwind.dylib
    0x7fff8eb58000 -     0x7fff8eb81ff7  libxpc.dylib (972.60.2) 
<1C9AF716-69DF-359F-85E9-7DFDE362F9A2> /usr/lib/system/libxpc.dylib
Sample analysis of process 10636 written to file /dev/stdout

I use ooRexx 5.0.0 dated may 20 2017 on Mac OS X Sierra, everything 64-bit mode


Hälsningar/Regards/Grüsse,
P.O. Jonsson




Anfang der weitergeleiteten Nachricht:

Von: "P.O. Jonsson" <[email protected]>
Betreff: Wtr: [Bsf4oorexx-devel] High memory usage in ooRexx
Datum: 2. Juni 2017 um 17:17:37 MESZ
An: "P.O. Jonsson" <[email protected]>


Hälsningar/Regards/Grüsse,
P.O. Jonsson



Anfang der weitergeleiteten Nachricht:

Von: "Rony G. Flatscher" <[email protected]>
Betreff: Aw: [Bsf4oorexx-devel] High memory usage in ooRexx
Datum: 2. Juni 2017 um 14:21:44 MESZ

Dear P.O.,

as this is a problem of ooRexx and not of BSF4ooRexx, I redirect further postings to the appropriate [email protected] (the ooRexx developer list).

Your problem might have to do with <https://sourceforge.net/p/oorexx/bugs/1450/> ("Performance drops suddenly (once even a crash) "), which once even caused ooRexx 5.0 to crash! The supplied (and submitted) crash information shows at the top of the stack trace the following line:

>       rexx.dll!HashContents::entryValue(unsigned int position=2105385000) Line 282    C++

As there are approx. 40,000 objects explicitly created in this supplied test case (pure ooRexx and a c++ library with external Rexx functions), the position value of 2,105,385,000 (two billion!) seems to have gone out of control at the point of this crash.

Bug # 1450 test case causes performance to drop dramatically while in parallel memory consumptions goes up, therefore speculating that the same reason may be responsible for it.

---rony



On 01.06.2017 23:37, P.O. Jonsson wrote:
Dear all,

I have a process that is sorting a large number of items.

I first have a barrel shifter to keep the „top-5“ items for each item. This section uses mutable buffers and iterates over all items (25-30 000 lines of text) and create locally sorted text lines.

I then store this semi-sorted data in an array and use a = a~StableSort to create a globally sorted data set, again involving 25-30 000 items.

Most of the time this goes fine but occasionally the rexx process starts to consume more and more memory until all memory (in my case a Mac Pro with 48 GB per CPU, 96 GB in total) is used up. After that the processing starts to become very slow, increasing the memory usage over the maximum for a single thread/CPU.

The program is to long and messy to enclose but here is some pseudo code

  Top01MB = .mutablebuffer~new
  Top02MB = .mutablebuffer~new
  ...

  a = .array~new

  DO i=1 TO CountMB.0
    ...

    DO j= 1 TO CountMB.i~Words

/* Store here only the Top-5 of the Iceberg */
      SELECT
        WHEN CountMB.i~Word(j) > Top01MB THEN
        DO
          Top05MB = Top04MB
          Top04MB = Top03MB
          Top03MB = Top02MB
          Top02MB = Top01MB
          Top01MB = CountMB.i~Word(j)
        END
        …

    END j

     a[i] = Top01MB Top02MB Top03MB Top04MB Top05MB

  END i

  a = a~StableSort

Where should I look for memory leaks or memory bloating code? How can I check where the program starts consuming/ not freeing memory?



Hälsningar/Regards/Grüsse,
P.O. Jonsson


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot_______________________________________________
Bsf4oorexx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bsf4oorexx-devel



------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Oorexx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to