I was wrong. My app was mishandling console input :(

>-----Original Message-----
>From: Tim Hardisty <t...@hardisty.co.uk>
>Sent: 09 March 2023 15:34
>To: dev@nuttx.apache.org
>Subject: RE: Help me understand file open/close behaviours?
>
>Guess what - this behaviour is only on Master. Spent an hour or 2 getting
>the test app and new driver to work under 12.0 release and I can ctrl-C
>out of my test app without problem and re-run it without an apocalyptic
>crash.
>
>I will now raise it as an issue on GitHub.
>
>>-----Original Message-----
>>From: Tim Hardisty <t...@hardisty.co.uk>
>>Sent: 08 March 2023 17:37
>>To: dev@nuttx.apache.org
>>Subject: RE: Help me understand file open/close behaviours?
>>
>>>From: Gregory Nutt <spudan...@gmail.com>
>>>Sent: 03 March 2023 19:03
>>>
>>>On 3/3/2023 12:56 PM, Gregory Nutt wrote:
>>>> On 3/3/2023 12:36 PM, Nathan Hartman wrote:
>>>>> On Fri, Mar 3, 2023 at 1:07 PM Tim Hardisty <t...@hardisty.co.uk>
>>wrote:
>>>>>> - I have enabled CONFIG_SIGKILL_ACTION to allow me to ctrl-c from
>>>>>> the console if the app is misbehaving or, I thought, just to exit
>>it.
>>>>>>
>>>>>> The behaviours I see are:
>>>>>>
>>>>>> 1) If I ctrl-c, the open files are not closed and if I re-run the
>>>>>> app, the system crashes. It is the very first printf statement of
>>>>>> the app that causes the crash, at the point the printf routine
>>>>>> calls lib_fflush (not looked further yet).
>>>>
>>>> SIGINT, SIGKILL, etc. don't do graceful shutdowns like exit() does.
>>>> They should behave as though _exit() were called which does an
>>>> immediate termination.  However, _exit() is still required to close
>>>> all open file descriptor (Per Linux man page) and, if it does not,
>>>> that would be a bug.
>>>>
>>>> SIGKILL can't be caught (again per the Linux man page)
>>>>
>>>> https://man7.org/linux/man-pages/man2/exit.2.html
>>>> https://man7.org/linux/man-pages/man7/signal.7.html
>>>>
>>>"Closing" per se is probably not a the root of the problem when the
>>>file descriptors are deallocated when the task group terminates, all
>>>of the descriptors are freed.  However, I suspect the there may be an
>>>open reference count in the drivers which is not decrements and whcih
>>>could subsequently in interfere with the correct behavior or a driver.
>>>
>>>
>>
>>To divert from procedural discussion...
>>
>>I think I take it from the above that a CTRL-C is not a clean exit; but
>>is not the root cause of the issue I'm seeing.
>>
>>The crash is at a printf the very first line of the app. And the same
>>is true if I run another example app after a ctrl-c out of my new test
>>app that uses printf. It is not to do with any interaction with file
>>open/close/ioctl etc. as I first thought.
>>
>>I don't get why a ctrl-c out of an app causes printf to completely
>>crash the board with no useful debug info to be had! The call stack
>>simply shows it was due to an ARM data abort exception.
>>
>>I am quite sure I have made some "daft" Kconfig change (or not made a
>>selection I should have done) - I welcome any suggestions before I
>>shrug my shoulders and conclude this is just "one of those things" :)

Reply via email to