All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Kiszka <kiszka@domain.hid>
To: Philippe Gerum <rpm@xenomai.org>
Cc: xenomai-core <xenomai@xenomai.org>
Subject: Re: [Xenomai-core] [bug] user memory leakage on rt_task_delete
Date: Fri, 09 Dec 2005 18:09:42 +0100	[thread overview]
Message-ID: <4399BA56.3030405@domain.hid> (raw)
In-Reply-To: <4399B81F.2030106@domain.hid>

[-- Attachment #1: Type: text/plain, Size: 2041 bytes --]

Jan Kiszka wrote:
> Philippe Gerum wrote:
>> Jan Kiszka wrote:
>>> Hi all,
>>>
>>> during my ongoing search for the init/cleanup issue of shadow threads, I
>>> stumbled over another problem: Deleting a userspace native thread that
>>> is blocked in primary mode does not let the NPTL clean up all resources
>>> allocated in userspace. If you plan to do some rt_task_create/delete in
>>> a loop, you will soon run out of memory (and Mr. oom-killer will show
>>> up...).
>>>
>>> I haven't found a solution for this beyond letting a rt-task always
>>> terminate itself (or terminate the whole program after forced
>>> deletions). If there is no solution, we should at least document this
>>> fact somewhere.
>>>
>>> Again, it's not a common use case, but it's also not an expectable
>>> behaviour of the native skin.
>>>
>> I see no possible workaround to allow a shadow thread deletion from
>> kernel space while still leaving the opportunity for the NPTL thread to
>> perform some user-space cleanups; recycling a previous Xenomai context
>> to unwind a Linux context would lead to some terminally broken
>> situation, so the nucleus must reap the terminated shadow at kernel
>> level asap. However, the rt_task_delete() wrapper from the user-space
>> support library might preferably pthread_kill() the thread, instead of
>> asking the nucleus for that purpose.
> 
> Hmm, I think I've read something about signal delivery and handling in
> threads which said that the delivery is per thread, but the handling
> remains to affect the whole process. Thus, I'm afraid we may kill
> ourselves here and not just the thread...
> 
> Ok, Versuch macht klug (in English: just give it a try)!
> 

Yep, as soon as the target thread was able to receive the signal, the
whole process can "enjoy" its effect.

What remains is to reserve one signal for the native skin and register a
handler on in to call pthread_exit. This should work, but leaves the
risk to collide with user defined signal handlers.

Jan


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 250 bytes --]

      parent reply	other threads:[~2005-12-09 17:09 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-12-08 17:18 [Xenomai-core] [bug] user memory leakage on rt_task_delete Jan Kiszka
2005-12-09 16:54 ` Philippe Gerum
2005-12-09 17:00   ` Jan Kiszka
2005-12-09 17:05     ` Philippe Gerum
2005-12-09 17:09     ` Jan Kiszka [this message]

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=4399BA56.3030405@domain.hid \
    --to=kiszka@domain.hid \
    --cc=rpm@xenomai.org \
    --cc=xenomai@xenomai.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.