On 01/06/2011 11:10 AM, Scott James Remnant wrote:
Why doesn't mingetty recreate the INIT_PROCESS record?

mingetty looks for INIT_PROCESS entry with same pid as itself. If it's not found
it creates new structure with LOGIN_PROCESS.



On Thu, Jan 6, 2011 at 10:08 AM, Petr Lautrbach<[email protected]>  wrote:
On 01/06/2011 08:38 AM, Scott James Remnant wrote:

Could you explain the 3rd patch a bit more for me, how do you see the
utmp entries working throughout the lifecycle - what would both
Upstart and mingetty do?


It's focused on respawning processes.

There is no utmp entry when mingetty is run first time and mingetty sets it
itself
to LOGIN_PROCESS.
After mingetty's end this entry is set in job_process_terminated() to
DEAD_PROCES
and the job->utmp_id is set to value found in utmp table.
For respawning jobs this value stays in job structure for next
job_process_run().
It is used there for setting up UPSTART_UTMP_ID job environment variable
which is used in
job_process_spawn() to change DEAD_PROCESS utmp entry to INIT_PROCESS and
pid of new process.
So mingetty can find it and change it to LOGIN_PROCESS.

Petr


On Wed, Jan 5, 2011 at 3:36 PM, Petr Lautrbach<[email protected]>
  wrote:

On 06/15/2010 04:39 PM, Petr Lautrbach wrote:

Hello,

Attached patch tries to fix #183729.

If we assume that *getty takes care about setting
INIT_PROCESS/LOGIN_PROCESS itself, we need
just set DEAD_PROCESS for dead processes with pid in utmp table and log
it
into wtmp.

Init goes through the utmp table, tries to find entry with dead process
pid and sets it
to DEAD_PROCESS. There is no need to create/set up "utmp" stanza.

Test covers utmp table with 2 entries and with 2 situation - process is
in
LOGIN_PROCESS or USER_PROCESS.


Hello.

Sorry for very late response.

There should not be setutxent() on job_process.c:1180. If there are more
than one record in utmp table then
it causes that only first entry will be overwritten every time. Attached
patch [1] adds test which covers this situation and
[2] removes this call.

But this is not still ideal. It seems that mingetty doesn't use
DEAD_PROCESS
entry if it's not last entry in table.
So if there are some sequence of login/logout on various consoles utmp
will
grow. It's fixed by patch [3].
When utmp entry for dead process is found then job->utmp_id is set. When
new
process is spawned and job->utmp_id is set
then INIT_PROCESS utmp entry for its id is created. This works well for
respawning processes.

[1] 0001-test-multiple-entries-with-same-ut_id.patch
[2] 0002-remove-setutxent-when-setting-DEAD_PROCESS.patch
[3] 0003-set-INIT_PROCESS-entry.patch

Petr
--
Petr Lautrbach, Red Hat, Inc.

--
upstart-devel mailing list
[email protected]
Modify settings or unsubscribe at:
https://lists.ubuntu.com/mailman/listinfo/upstart-devel





--
Petr Lautrbach, Red Hat, Inc.




--
Petr Lautrbach, Red Hat, Inc.

--
upstart-devel mailing list
[email protected]
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/upstart-devel

Reply via email to