Bug 62325 - Kernel oops, system hangs when starting tux on smp/bigmem kernels
Summary: Kernel oops, system hangs when starting tux on smp/bigmem kernels
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Red Hat Linux
Classification: Retired
Component: kernel
Version: 7.3
Hardware: i386
OS: Linux
medium
high
Target Milestone: ---
Assignee: Arjan van de Ven
QA Contact: Brian Brock
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2002-03-29 18:19 UTC by David Morse
Modified: 2007-04-18 16:41 UTC (History)
1 user (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2002-04-04 22:49:39 UTC
Embargoed:


Attachments (Terms of Use)

Description David Morse 2002-03-29 18:19:23 UTC
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).

Comment 1 David Morse 2002-04-04 22:49:35 UTC
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();


Comment 2 Ingo Molnar 2002-04-09 08:26:09 UTC
managed to reproduce this, next kernel should have the fix.


Note You need to log in before you can comment on or make changes to this bug.