A least on Windows (I will try later on macOS), it always fires errors like:
Attempt to free nonexistent shared string 'Tk::Button=HASH(0x88256ec)'
+, Perl interpreter: 0x8b06784 at C:/berrybrew/5.28.0_32/perl/site/lib
+/Tk/Balloon.pm line 150 during global destruction.
Free to wrong pool 8a89560 not c69f50 at C:/berrybrew/5.28.0_32/perl/s
+ite/lib/Tk/Widget.pm line 363 during global destruction.
From the first thread to the last one (and merging of all arrays) nothing happens with the GUI and no Tk code involved in the subroutines (the GUI may also freeze which is okay in may case).