All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wolfgang Grandegger <wg@domain.hid>
To: Jan Kiszka <jan.kiszka@domain.hid>
Cc: xenomai-core <xenomai@xenomai.org>
Subject: Re: [Xenomai-core] BUG: sleeping function called from invalid context at kernel/xenomai/skins/posix/syscall.c:272
Date: Thu, 19 Oct 2006 16:43:16 +0200	[thread overview]
Message-ID: <45378F04.2070500@domain.hid> (raw)
In-Reply-To: <45367E43.5020208@domain.hid>

Jan Kiszka wrote:
> Wolfgang Grandegger wrote:
>> Hello,
>>
>> when I start the RT-Socket-CAN program rtcan_rtt.c, I get the attached
>> error message. Any idea where the problem could be? It was working with
>> Xenomai under Linux 2.4.25.
>>
>> Thanks.
>>
>> Wolfgang.
>>
>>
>>
>> ------------------------------------------------------------------------
>>
>> bash-3.00# rtcan_rtt rtcan0 rtcan1
>> BUG: sleeping function called from invalid context at kernel/xenomai/skins/posix/syscall.c:272
>> in_atomic():0, irqs_disabled():1
> 
> Leaking lock somewhere? Some suggestions:
> 
> - Does it also happen with rtcan_virt?

Yes.

> - If no: switch on XENO_OPT_DEBUG and then XENO_OPT_DEBUG_RTDM (may
>   catch leaking locks of the CAN driver)

Does not give an additional information for the "if yes" case.

> - If yes: what arch are you on? PPC? On x86/2.6 I do not have problems
>   with your demo over rtcan_virt.

It's on PowerPC (MPC5200) under Linux 2.6. I have not realized a similar 
problem with 2.4 on the same board. And it seems to be related with 
pthread_setschedparam(). And is nothing to do with RTCAN as the 
cyclictest() prints the same error message. There is obviously a problem 
with __xn_put_user -> __put_user -> put_user_nocheck:

#define __put_user_nocheck(x, ptr, size)                        \
({                                                              \
         long __pu_err;                                          \
         __typeof__(*(ptr)) __user *__pu_addr = (ptr);           \
         if (!is_kernel_addr((unsigned long)__pu_addr))          \
                 might_sleep();                                  \
         __chk_user_ptr(ptr);                                    \
         __put_user_size((x), __pu_addr, (size), __pu_err);      \
         __pu_err;                                               \
})
 

The "might_sleep" seems to make trouble, which showed up in recent 
versions of Linux on the PowerPC arch :-(.

Wolfgang.



Wolfgang.



      parent reply	other threads:[~2006-10-19 14:43 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-10-18 17:23 [Xenomai-core] BUG: sleeping function called from invalid context at kernel/xenomai/skins/posix/syscall.c:272 Wolfgang Grandegger
2006-10-18 19:19 ` Jan Kiszka
2006-10-19  7:23   ` Wolfgang Grandegger
2006-10-19 14:43   ` Wolfgang Grandegger [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=45378F04.2070500@domain.hid \
    --to=wg@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.