Re: 2.6.33.[56]-rt23: howto create repeatable explosion in wakeup_next_waiter()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 07/07/2010 07:31 AM, Mike Galbraith wrote:
On Wed, 2010-07-07 at 19:41 +0530, gowrishankar wrote:
On Wednesday 07 July 2010 10:16 AM, Mike Galbraith wrote:
Greetings,

Stress testing, looking to trigger RCU stalls, I've managed to find a
way to repeatably create fireworks.  (got RCU stall, see attached)

1. download ltp-full-20100630.  Needs to be this version because of
testcase bustage in earlier versions, and must be built with gcc>   4.3,
else testcases will segfault due to a gcc bug.


Hi Mike,
I have seen this segfault esp with GCC v4.3.4. I am about to post this
patch
in ltp:

Signed-off-by: Gowrishankar<gowrishankar.m@xxxxxxxxxx>
---
   testcases/realtime/include/librttest.h |    6 +++---
   1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/testcases/realtime/include/librttest.h
b/testcases/realtime/include/librttest.h
index e526ab4..273de6f 100644
--- a/testcases/realtime/include/librttest.h
+++ b/testcases/realtime/include/librttest.h
@@ -118,9 +118,9 @@ static inline int atomic_add(int i, atomic_t *v)
          int __i;
          __i = i;
          asm volatile(
-                       "lock; xaddl %0, %1;"
-                       :"=r"(i)
-                       :"m"(v->counter), "0"(i));
+                       "lock; xaddl %1, %0;"
+                       :"=m"(v->counter)
+                       :"r"(i), "m" (v->counter));
          return i + __i;
   #elif defined(__powerpc__)
   #define ISYNC_ON_SMP   "\n\tisync\n"
--

Please let me know if this patch helps.

Yup, all better.

So with this, the "volatile struct" patch isn't necessary?

If so, perhaps we would be better off converting librttest.h to implement the atomic functions using the glibc built-ins, ie:

static inline int
atomic_add(atomic_t *addr, int i)
{
	return __sync_add_and_fetch(&addr->val, i);
}

It's more maintainable than inline asm and better tested than a roll your own implementation. Oddly, I believe the original was patterned after what is in the Linux kernel...

--
Darren




	-Mike



--
Darren Hart
IBM Linux Technology Center
Real-Time Linux Team
--
To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux