I got the logs following by your advice, but I didn't find any critical differences, you can take a look.
The only significant difference between the two after_shoot logs is that
UI:DSIC:48,0
shows up more often and much quicker after shoot in the AC powered case.
The default log buffer is rather small unfortunately, the startup log entries are no longer available.
I've tried write log to file using GetLogToFile() function after error appears but I have message "Unsuccessful. File Create Error" in UART terminal. Also there is this message if I try use GetLogToFile() just after camera poweron using adapter
This seems to be a much better lead, because it's not GUI code. I did not try to follow that error message, but I bet it's about a failed open() call. If so, you have to determine why (and how) open() fails. You could copy its code to RAM (as you do with the startup sequence) and see which code path is causing it to return with error. (That means you have to create a debugging version of PSM, you can emit console messages from the modified code.)
edit:
addresses are from ixus145 1.00c
The function that returns with failure is sub_FF8265F4. You can choose to copy GetLogToFile -> sub_FF892ADC to RAM and modify the "File Create Error" debug message to print the return value. Or, you can just call sub_FF8265F4 from SpyTask after an appropriate delay, and you can print its return value.
int sub_FF8265F4(char *filename, int unknown, char *buffer, int buffer_size)
"unknown" is usually -1
The function simply writes the buffer's content to a file. It can return many error conditions, would be good to know which one is it in this case.