[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[MiNT] A progress on the fatal error in pipefs.c



Hi,

yesterday I managed to shutdown the system from the virtual console while
the AES was up and running. I disposed shutdown -rf and the system
rebooted properly after a while. No fatal error occurred.

The Shutdown() function of the MiNT kernel does several steps:

1. First it sends SIGTERM to all the processes running.
2. Then it waits a while to grant the processes some time to exit.
3. Then it sends SIGKILL to al lprocesses left.
4. Then it calls close_filesys() to close all open files.
5. Then calls Sync() to sync filesystems
6. Then it unmounts all mounted partitions.
7. And reboots the system (or halts it)

The fatal error definitely occurs while doing step 4th, while closing
fifos in /pipe folder. I still have no idea on the exact reason, why
executing the AES could cause an inconsistency of the pipefs and I guess
this is the thing to discover in the near future. However, skipping the
call to close_filesys() in Shutdown() in dos.c definitely fixes the
particular problem of the fatal error while shutting the system down.

However, I wonder if the call to close_filesys() is really necessary
there. After all, when all processes are killed, all their files should
already get closed. And they really are, because fifos (for example) _are_
already closed when close_filesys() walks through them. Next step is a
sync() so disk filesystems will be ok. And even if a fifo or shared mem
block is left unclosed, who cares? These are memory structures and they
will get destroyed anyways during reboot.

Opinions?

--
Konrad M.Kokoszkiewicz
|mail: draco@atari.org                  |  Atari Falcon030 user   |
|http://www.obta.uw.edu.pl/~draco/      | Moderator gregis LATINE |
|http://draco.atari.org                 |       (loquentium)      |

** Ea natura multitudinis est,
** aut servit humiliter, aut superbe dominatur (Liv. XXIV,25)
*************************************************************
** U pospolstwa normalne jest, ze albo sluzy ono unizenie,
** albo bezczelnie sie panoszy.