@gloomyandy Hi, I can answer part:
1/ it is MB6HC with Raspi 3B which previously (before switching to 3.50-rc1) did run fine with 3.4.6 even for 9hrs prints.
2/ I did insert echo statements between every few lines and at some point there was no output in the log. Then I did add a global var at the begin of config.g like
global var test = 0
... some lines
set global.test = global.test + 1
... some more lines
set global.test = global.test + 2
... and so one , having some bits set in global.test while propagating through the config.g
... at the end of config.g I would add
echo "config . final state : " ^ global.test
I also created a small macro to be called independently from config.g to show global.test (bitwise).
With these helpers I was quite sure to identify that config.g stopped execution at some point midwise.
3/ yes, reproducible behaviour. I currently have the effect that in the middle of config.g I have a sequence
; ----------------- actually from line 151ff -----------------------------
if global.verboseExecution
echo "config : further config settings in sub-macros ..."
; Axis Limits
echo "config : call sub-macro configAxesRange.g ..."
M98 P"0:/sys/configAxesRange.g" ; set M561 & M564 S1 H1 at the end
echo "config : macro configAxesRange.g executed, result = " ^ global.configAxesRange
set var.configCompleteSubmacros = global.configAxesRange
; Endstops
M98 P"0:/sys/configEndstops.g"
echo "config : macro configEndstops.g executed, result = " ^ global.configEndstops
set var.configCompleteSubmacros = global.configEndstops
........
and the cosole output is
14.10.2023, 12:45:17 M98 P"0:/sys/config.g"
14.10.2023, 12:45:17 config : macro configAxesRange.g executed, result = true
14.10.2023, 12:45:17 configAxesRange : Therefore the real nozzle is somewhere at Z = -4.0 ... -5.0.
14.10.2023, 12:45:17 configAxesRange : NOTE that Z axis MAX is set to 345 to prevent early nozzle crashes.
14.10.2023, 12:45:17 configAxesRange : all axes min & max positions are initialized
14.10.2023, 12:45:17 configAxesRange : Z axis : 0 : 345
14.10.2023, 12:45:17 configAxesRange : Y axis : -22 : 312
14.10.2023, 12:45:17 configAxesRange : X axis : -19 : 325
14.10.2023, 12:45:16 configAxesRange : init running ...
14.10.2023, 12:45:16 config : call sub-macro configAxesRange.g ...
14.10.2023, 12:45:16 config : further config settings in sub-macros ...
where this console output is to be read reverse (i.e. last msg on top).
The last msg is "14.10.2023, 12:45:17 M98 P"0:/sys/config.g" but the expected output from the command "echo "config : call sub-macro configEndstops.g ..." and anything following is missing. Obviously config.g was stopped after that last visible echo and the next (almost immediately following echo) somewhere. I did comment out the assignement statement between these two echo statements, but no change.
Btw: I checked with Ultraedit the config.g (and all sub macros directly used) for proper indentation for If#s etc (I always use blanks instead of tabs) and no garbage after code lines which might confuse a code-interpreter. All files are NICE looking.
4/ Stripping down config.g to achieve something small might be difficult. First I will try again by replacing the macro call by directly inserting the complete macro code into config.g which will make it quite large! I hope that this does not create new problems