Just tried profiler. It seems that it doesn't consider program "done" until encountering !QUIT - END is not enough.
It works exactly as I would expect - i.e. it continues profiling until the program is terminated. In LBB (and in LB) 'end' only terminates a program if there is a 'nomainwin'; if the mainwin is displayed, 'end' doesn't terminate the program!
Normally a Liberty BASIC program is terminated by the user. If it's a GUI program ('nomainwin') typically it will be terminated by clicking on a GUI window's Close button or by selecting Exit from a menu. If it's a 'console' style program, it will be terminated by clicking on the mainwin's Close button. Either way, that is when the profiler will generate its report.
It would be difficult to make it work any differently, because in LBB 'end' doesn't alter the state of the program - it is 'running' (for example in order to allow you to scroll the mainwin, or to copy its contents to the clipboard) just as much as it was beforehand!
I've taken the opportunity to change the format of the profiler report file so that it displays correctly in WordPad, and to address a compatibility issue with the old lb3_toolbar DLL (which I'm not sure is any longer available, but which some people apparently still use).