All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@domain.hid>
To: Philippe Gerum <rpm@xenomai.org>, Wolfgang Grandegger <wg@domain.hid>
Cc: xenomai-core <xenomai@xenomai.org>
Subject: [Xenomai-core] Linux lock-up with rtcanrecv
Date: Thu, 08 Feb 2007 00:04:29 +0100	[thread overview]
Message-ID: <45CA5AFD.9020805@domain.hid> (raw)


[-- Attachment #1.1: Type: text/plain, Size: 1836 bytes --]

Hi all,

fiddling with latest Xenomai trunk and 2.3.x on one of our robots (there
is still a bug in trunk /wrt broken timeouts of rt_dev_read on
xeno_16550A - different issue...), I ran into a weird behaviour of
rtcanrecv:

I have a continuous stream of a few thousand packets/s towards the
robot. When I start up two "rtcanrecv rtcan0 -p1000" instances (or one +
our own receiver application), the second one causes a Linux lock-up.
Sometimes this happens during startup of the second rtcanrecv, but at
latest on its termination. Other RT tasks are still running. I can
resolve the lock-up by pulling the CAN cable, everyone is fine
afterwards and can be cleaned up. I played with quite a few combinations
of recent ipipe patches and Xenomai revisions (even back to #1084 in
v2.3.x), no noticeable difference.

Seems like I have to take a closer look - once time permits and the
robot is available. So any ideas or attempts to reproduce this are
welcome, current .config attached (no magic knob found there yet).

Jan


PS: Wolfgang, any objections against "decoupling" -v from -p and
lowering the receiver priority to 0?

Index: src/utils/can/rtcanrecv.c
===================================================================
--- src/utils/can/rtcanrecv.c	(revision 2146)
+++ src/utils/can/rtcanrecv.c	(working copy)
@@ -192,6 +192,7 @@ int main(int argc, char **argv)

 	case 'p':
 	    print = strtoul(optarg, NULL, 0);
+	    break;

 	case 'v':
 	    verbose = 1;
@@ -312,7 +313,7 @@ int main(int argc, char **argv)
     }

     snprintf(name, sizeof(name), "rtcanrecv-%d", getpid());
-    ret = rt_task_shadow(&rt_task_desc, name, 1, 0);
+    ret = rt_task_shadow(&rt_task_desc, name, 0, 0);
     if (ret) {
 	fprintf(stderr, "rt_task_shadow: %s\n", strerror(-ret));
 	goto failure;


[-- Attachment #1.2: config.bz2 --]
[-- Type: application/octet-stream, Size: 7460 bytes --]

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

             reply	other threads:[~2007-02-07 23:04 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-02-07 23:04 Jan Kiszka [this message]
2007-02-07 23:09 ` [Xenomai-core] Linux lock-up with rtcanrecv Jan Kiszka
2007-02-08  8:44   ` Wolfgang Grandegger
2007-02-08  8:46 ` [Xenomai-core] " Wolfgang Grandegger
2007-02-08  8:43   ` Jan Kiszka
2007-02-08 12:28     ` 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=45CA5AFD.9020805@domain.hid \
    --to=jan.kiszka@domain.hid \
    --cc=rpm@xenomai.org \
    --cc=wg@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.