All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wolfgang Grandegger <wg@domain.hid>
To: Jan Kiszka <jan.kiszka@domain.hid>
Cc: Roderik_Wildenburg@domain.hid, xenomai@xenomai.org
Subject: Re: AW: [Xenomai-help] memset of heap crashes Xenomai-Task
Date: Tue, 11 Jul 2006 10:42:28 +0200	[thread overview]
Message-ID: <44B36474.4090005@domain.hid> (raw)
In-Reply-To: <44B35FB9.4050607@domain.hid>

Jan Kiszka wrote:
> Wolfgang Grandegger wrote:
>> Roderik_Wildenburg@domain.hid wrote:
>>>> memset should work with Xenomai heaps, I suspect your problem is
>>>> rather that the memory is not really allocated until you memset it,
>>>> which fails when no memory is available. In this case, calling memset
>>>> on memory allocated with malloc should segfault the same way when the
>>>> system memory is exhausted. IIRC, this behaviour is documented in
>>>> mlockall manual page.
>>>>
>>> Mr. Denk told me about this strange (for RTOSs) behaviour of the Linux
>>> kernel. Therefore I used the Xenomai heap mechanism, expecting
>>> allocated memory is allocated at once not some time later (why do I
>>> allocate memory otherwise : to be shure memory is available).
>>> Does Xenomai use the Linux allocation mechanism ??
>>>
>>>
>>>> Be careful with sysconf(_SC_AVPHYS_PAGES), it may include the swap
>>>> size, but when mlocking memory, your application can not use swap
>>>> pages, so, you should substract the size of swap, if any.
>>>> Also, what is the value of /proc/sys/vm/overcommit_memory on your
>>>> system ?
>>>>
>>> Our System does not have a swap device\space.
>>> /proc/sys/vm/overcommit_memory = 0
>>> (whatever this means)
>> I gave your program a try on my MPC5200 and got the following output
>> (after some corrections):
>>
>> bash-2.05b# ./heap2
>> Start Heap
>> root_thread_init :
>> timer startedt
>> display task created
>> root_thread_init beendet
>> Available Memory 56238080 (Pagesize 4096)
>> heap 0 of size 16000000 created
>> Heap 0 allocated size 16000000
>> heap 1 of size 16000000 created
>> Heap 1 allocated size 16000000
>> heap 2 of size 16000000 created
>> Heap 2 allocated size 16000000
>> __alloc_pages: 0-order allocation failed (gfp=0x1f2/0)
>> Available Memory after allocation 8933376
>> __alloc_pages: 0-order allocation failed (gfp=0x1f0/0)
>> Heap 3 created with size 4218880
>> Heap 3 allocated size 4218880
>> Memory allocated in total : 52218880
>> Segmentation fault
>>
>> The are some long delays (approx. 40 secs) around __alloc_pages. Finally
>> it crashes in memset. With the attached xenomai patch, which touches the
>> reserved page once, memset works fine. Let's wait what Philippe says. I
>> remember that the "touch" was needed for RTAI shared memory as well.
> 
> What is the difference between touching the page in kernel space and in
> user space? Is there no risk that the kernel will oops then at some
> point? Do we get the same result when touching the heap pages in user
> space immediately after rt_help_alloc'ing them? Roderik's demo allocates
> first and then touches/memsets. [I have no problem with the patch, I'm
> just trying to understand the mechanism.]

Well, after some more tests I realized, that the problem still shows up 
==> forget the patch and sorry for the noise. It seems to be more 
complicated (sometimes it runs, sometimes I see other crashes, etc.).

Wolfgang.



  reply	other threads:[~2006-07-11  8:42 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-07-11  6:25 AW: [Xenomai-help] memset of heap crashes Xenomai-Task Roderik_Wildenburg
2006-07-11  8:09 ` Wolfgang Grandegger
2006-07-11  8:22   ` Jan Kiszka
2006-07-11  8:42     ` Wolfgang Grandegger [this message]
  -- strict thread matches above, loose matches on Subject: below --
2006-07-11  6:09 Roderik_Wildenburg
2006-07-11  6:22 ` Jan Kiszka

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=44B36474.4090005@domain.hid \
    --to=wg@domain.hid \
    --cc=Roderik_Wildenburg@domain.hid \
    --cc=jan.kiszka@domain.hid \
    --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.