Description of problem: As soon as TUX is started on skipjack smp or bigmem kernels, I get a kernel BUG Version-Release number of selected component (if applicable): 2.4.18-0.4 How reproducible: Always Steps to Reproduce: 1. Install skipjack on SMP box 2. Boot -smp or -bigmem kernel 3. service tux start Actual Results: 2.4.18-0.4bigmem: Starting tux: invalid operand: 0000 CPU: 2 EIP: 0010:[<f891f606>] Not tainted EFLAGS: 00010282 EIP is at __sys_tux [tux] 0x316 eax: 0000001b ebx: f5d76000 ecx: c0314024 edx:00003864 esi: bfffe310 edi: f5d77f98 ebp: f8931240 esp:f5d77f64 ds: 0018 es: 0018 ss: 0018 Process tux (pid: 1465, stackpage=f5d77000) Stack: f892d805 0000040b 00000010 00000004 00000002 f7040a04 ffffffff ffffffff ffffffff 00000000 00000004 f7ffa000 00000000 bfffe2f0 <4>------------[ main.c:e035--<4>kernel BUG at /usr/src/build/80758-i686/BUILD/kernel-2.4.18/linux/include/asm/spinlock.h:90! -----------[ cut here ]------------ kernel BUG at main.c:1035! TUX: thread 0 listens on http://0.0.0.0:80. _________________ Here's the code where the oops occurs: spinlock.h: static inline void spin_unlock(spinlock_t *lock) { #if SPINLOCK_DEBUG if (lock->magic != SPINLOCK_MAGIC) BUG(); if (!spin_is_locked(lock)) BUG(); // line 90 where oops occurs #endif __asm__ __volatile__( spin_unlock_string ); } _____________________ Expected Results: TUX: thread 0 listens on http://0.0.0.0:80. TUX: thread 1 listens on http://0.0.0.0:80. TUX: thread 2 listens on http://0.0.0.0:80. TUX: thread 3 listens on http://0.0.0.0:80. Additional info: Doesn't occur on Skipjack UP kernel; it appears to be spinlock problem (SMP-specific).
net/tux/main.c, line 1035 is the TUX_BUG() line of this section of code: case TUX_ACTION_STARTTHREAD: { int nr; ret = copy_from_user(&nr, &u_info->thread_nr, sizeof(int)); if (ret) GOTO_ERR_no_unlock; if (nr >= nr_tux_threads) GOTO_ERR_no_unlock; ti = threadinfo + nr; if (ti->started) GOTO_ERR_unlock; current->tux_info = ti; current->tux_exit = tux_exit; if (ti->thread) TUX_BUG();
managed to reproduce this, next kernel should have the fix.