Re: cvs commit: src/sys/kern kern_timeout.c src/sys/sys callout.h

From: Mark Atkinson <atkin901_at_yahoo.com>
Date: Tue, 20 Nov 2007 14:54:49 -0800
Attilio Rao wrote:
> attilio     2007-11-20 00:37:45 UTC
> 
>   FreeBSD src repository
> 
>   Modified files:
>     sys/kern             kern_timeout.c
>     sys/sys              callout.h
>   Log:
>   Add the function callout_init_rw() to callout facility in order to use
>   rwlocks in conjuction with callouts.  The function does basically what
>   callout_init_mtx() alredy does with the difference of using a rwlock
>   as extra argument.
>   CALLOUT_SHAREDLOCK flag can be used, now, in order to acquire the lock
>   only
>   in read mode when running the callout handler.  It has no effects when
>   used in conjuction with mtx.
>   
>   In order to implement this, underlying callout functions have been made
>   completely lock type-unaware, so accordingly with this, sysctl
>   debug.to_avg_mtxcalls is now changed in the generic
>   debug.to_avg_lockcalls.
>   
>   Note: currently the allowed lock classes are mutexes and rwlocks because
>   callout handlers run in softclock swi, so they cannot sleep and they
>   cannot acquire sleepable locks like sx or lockmgr.
>   
>   Requested by: kmacy, pjd, rwatson
>   Reviewed by: jhb
>   
>   Revision  Changes    Path
>   1.107     +57 -52    src/sys/kern/kern_timeout.c
>   1.32      +10 -3     src/sys/sys/callout.h
> _______________________________________________
> cvs-src_at_freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/cvs-src
> To unsubscribe, send any mail to "cvs-src-unsubscribe_at_freebsd.org"

Did I update at the wrong time?  I get this after I rebuilt world trying to
go to multi user:

Fatal trap 12: page fault while in kernel mode
cpuid = 0; apic id = 00
fault virtual address   = 0xdeadc0ee
fault code              = supervisor read, page not present
instruction pointer     = 0x20:0xc075ea03
stack pointer           = 0x28:0xe4364c54
frame pointer           = 0x28:0xe4364c64
code segment            = base 0x0, limit 0xfffff, type 0x1b
                        = DPL 0, pres 1, def32 1, gran 1
processor eflags        = interrupt enabled, resume, IOPL = 0
current process         = 12 (swi4: clock sio)
[thread pid 12 tid 100005 ]
Stopped at      _mtx_assert+0x53:       movl    0x10(%edx),%eax
db> bt
Tracing pid 12 tid 100005 td 0xc3f08440
_mtx_assert(deadc0de,14,c0ac8273,a7,c422f860,...) at _mtx_assert+0x53
unlock_mtx(deadc0de,1,c0aca89d,f2,6,...) at unlock_mtx+0x2a
softclock(0,0,c0ac60de,46f,c3f46364,...) at softclock+0x293
ithread_loop(c3f05280,e4364d38,c0ac5e54,30c,c3f067f8,...) at
ithread_loop+0x1c5
fork_exit(c074e7f0,c3f05280,e4364d38) at fork_exit+0xc5
fork_trampoline() at fork_trampoline+0x8
--- trap 0, eip = 0, esp = 0xe4364d70, ebp = 0 ---
db> show alllocks
Process 12 (swi4: clock sio) thread 0xc3f08440 (100005)
exclusive sleep mutex Giant r = 0 (0xc0be3570) locked
_at_ /usr/src/sys/kern/kern_mutex.c:151
db> call doadump
Physical memory: 1010 MB
Dumping 48 MB: 33 17 1
Dump complete
= 0xf
db> panic
panic: from debugger
cpuid = 0
Uptime: 23s
Automatic reboot in 15 seconds - press a key on the console to abort

-- 
Mark Atkinson
atkin901_at_yahoo.com
(!wired)?(coffee++):(wired);
Received on Tue Nov 20 2007 - 21:55:26 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:22 UTC