@@ -73,11 +73,13 @@ class StackMeasurer_c
7373public:
7474 ATTRIBUTE_NO_SANITIZE_ADDRESS StackSizeTuplet_t MockMeasureStack ()
7575 {
76+ StringBuilder_c sLog ;
7677 constexpr int iMeasures = 50 ;
7778 DWORD uDepth = 0 ;
7879 BuildMockExprWrapper ( uDepth );
7980 auto uStartingStack = MeasureStack ();
8081 sphLogDebugv ( " ========= start measure ==============" );
82+ sLog .Sprintf ( " height 0, stack %d, deltah %d, deltastack %d" , uStartingStack, 0 , uStartingStack );
8183 sphLogDebugv ( " height 0, stack %d, deltah %d, deltastack %d" , uStartingStack, 0 , uStartingStack );
8284
8385 DWORD i = 1 ;
@@ -106,8 +108,9 @@ class StackMeasurer_c
106108 uPreviousStack = uThisStack;
107109 uPreviousDepth = uDepth;
108110 sphLogDebugv ( " height %d, stack %d, deltah %d, deltastack %d" , uDepth, uThisStack, uDeltaDepth, iDelta );
111+ sLog .Sprintf ( " %d: %d: %d: %d" , uDepth, uThisStack, uDeltaDepth, iDelta );
109112 ++i;
110- if ( uDeltaDepth==1 )
113+ if ( uDeltaDepth==1 && iDelta> 0 )
111114 {
112115 auto iMaxTries = IncValue ( iDelta );
113116 const auto iRestTries = iMeasures - i;
@@ -126,11 +129,18 @@ class StackMeasurer_c
126129
127130 dHistogram.Sort ( Lesser ( [] ( auto l, auto r ) { return l.second >r.second ; } ) );
128131 sphLogDebugv ( " Performed %d measures out of %d, max depth %d" , i, iMeasures, uDepth );
132+ sLog .Sprintf ( " Performed %d measures out of %d, max depth %d" , i, iMeasures, uDepth );
129133 for ( const auto & pair : dHistogram )
134+ {
130135 sphLogDebugv ( " stack frame size %d, frames %d" , pair.first , pair.second );
136+ sLog .Sprintf ( " stack frame size %d, frames %d" , pair.first , pair.second );
137+ }
131138
132139 if ( dHistogram.IsEmpty () )
140+ {
133141 sphWarning (" Something wrong measuring stack. After %d tries, %d depth" , i, uDepth );
142+ sphWarning (" log: %s" , sLog .cstr ());
143+ }
134144
135145 auto iStack = dHistogram.First ().first ;
136146 assert (iStack>0 );
0 commit comments