From: Roland McGrath <roland@redhat.com>
To: frank@exit.com
Cc: Frank Mayhar <fmayhar@google.com>, linux-kernel@vger.kernel.org
Subject: Re: posix-cpu-timers revamp
Date: Mon, 7 Apr 2008 13:08:04 -0700 (PDT) [thread overview]
Message-ID: <20080407200804.5541926F992@magilla.localdomain> (raw)
In-Reply-To: Frank Mayhar's message of Saturday, 5 April 2008 22:26:48 -0700 <1207459608.94001.22.camel@jill.exit.com>
> Yeah, I checked that out. The one difference here is that that was a
> race between do_exit() (actually release_task()/__exit_signal()) and
> run_posix_cpu_timers(). While this race was the same in that respect,
> there was also a race between all of the timer-tick routines that call
> any of account_group_user_time(), account_group_system_time() or
> account_group_exec_runtime() and __exit_signal(). This is because those
> functions all dereference tsk->signal.
The essence that matters is the same: something that current does with its
own ->signal on a tick vs something that the release_task path does.
> Erm, well, this isn't reorganizing the data structures per se, since
> these are new data structures.
Tomato, tomato. You're adding new data structures and lifetime rules to
replace data that was described in a different data structure before, yet
your new data's meaningful semantic lifetime exactly matches that of
signal_struct. You could as well make everything release_task cleans up be
done in __put_task_struct instead, but that would not be a good idea
either. You've added a word to task_struct (100000 words per 100000-thread
process, vs one word). It's just not warranted.
> The upshot of this is that none of the timer routines dereference
> tsk->signal, so the races go away, no locking needed. From my
> perspective this was the simplest solution, since lock dependency
> ordering is _really_ a can of worms.
With the perspective of tunnel vision to just your one test case, adding
something entirely new considering only that case always seems simplest.
That's not how we keep the entire system from getting the wrong kinds of
complexity.
> Regarding the second approach, without locking wouldn't that still be
> racy? Couldn't exit_state change (and therefore __exit_signal() run)
> between the check and the dereference?
No. current->exit_state can go from zero to nonzero only by current
running code in the do_exit path. current does not progress on that
path while current is inside one update_process_times call.
Thanks,
Roland
next prev parent reply other threads:[~2008-04-07 20:08 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <bug-9906-10286@http.bugzilla.kernel.org/>
2008-02-07 0:50 ` [Bugme-new] [Bug 9906] New: Weird hang with NPTL and SIGPROF Andrew Morton
2008-02-07 0:58 ` Frank Mayhar
2008-02-07 2:57 ` Parag Warudkar
2008-02-07 15:22 ` Alejandro Riveira Fernández
2008-02-07 15:53 ` Parag Warudkar
2008-02-07 15:56 ` Parag Warudkar
2008-02-07 15:54 ` Alejandro Riveira Fernández
2008-02-07 16:01 ` Parag Warudkar
2008-02-07 16:53 ` Parag Warudkar
2008-02-29 19:55 ` Frank Mayhar
2008-03-04 7:00 ` Roland McGrath
2008-03-04 19:52 ` Frank Mayhar
2008-03-05 4:08 ` Roland McGrath
2008-03-06 19:04 ` Frank Mayhar
2008-03-11 7:50 ` posix-cpu-timers revamp Roland McGrath
2008-03-11 21:05 ` Frank Mayhar
2008-03-11 21:35 ` Roland McGrath
2008-03-14 0:37 ` Frank Mayhar
2008-03-21 7:18 ` Roland McGrath
2008-03-21 17:57 ` Frank Mayhar
2008-03-22 21:58 ` Roland McGrath
2008-03-24 17:34 ` Frank Mayhar
2008-03-24 22:43 ` Frank Mayhar
2008-03-31 5:44 ` Roland McGrath
2008-03-31 20:24 ` Frank Mayhar
2008-04-02 2:07 ` Roland McGrath
2008-04-02 16:34 ` Frank Mayhar
2008-04-02 17:42 ` Frank Mayhar
2008-04-02 19:48 ` Roland McGrath
2008-04-02 20:34 ` Frank Mayhar
2008-04-02 21:42 ` Frank Mayhar
2008-04-04 0:53 ` Frank Mayhar
2008-04-04 23:17 ` Roland McGrath
2008-04-06 5:26 ` Frank Mayhar
2008-04-07 20:08 ` Roland McGrath [this message]
2008-04-07 21:31 ` Frank Mayhar
2008-04-07 22:02 ` Roland McGrath
2008-04-08 21:27 ` Frank Mayhar
2008-04-08 21:52 ` Frank Mayhar
2008-04-08 22:49 ` Roland McGrath
2008-04-09 16:29 ` Frank Mayhar
2008-04-02 18:42 ` Frank Mayhar
2008-03-28 0:52 ` [PATCH 2.6.25-rc6] Fix itimer/many thread hang Frank Mayhar
2008-03-28 10:28 ` Ingo Molnar
2008-03-28 22:46 ` [PATCH 2.6.25-rc7 resubmit] " Frank Mayhar
2008-04-01 18:45 ` Andrew Morton
2008-04-01 21:46 ` Frank Mayhar
2008-03-21 20:40 ` posix-cpu-timers revamp Frank Mayhar
2008-03-07 23:26 ` [Bugme-new] [Bug 9906] New: Weird hang with NPTL and SIGPROF Frank Mayhar
2008-03-08 0:01 ` Frank Mayhar
2008-02-07 17:36 ` Frank Mayhar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080407200804.5541926F992@magilla.localdomain \
--to=roland@redhat.com \
--cc=fmayhar@google.com \
--cc=frank@exit.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®