cvs commit: src/sys/cddl/contrib/opensolaris/uts/common/dtrace dtrace.c

John Baldwin jhb at freebsd.org
Tue Aug 19 22:05:05 UTC 2008


On Tuesday 19 August 2008 05:28:58 pm John Birrell wrote:
> jb          2008-08-19 21:28:58 UTC
> 
>   FreeBSD src repository
> 
>   Modified files:
>     sys/cddl/contrib/opensolaris/uts/common/dtrace dtrace.c 
>   Log:
>   SVN rev 181879 on 2008-08-19 21:28:58Z by jb
>   
>   Add calls to callout_drain() to ensure the callouts are flushed before
>   we free memory from underneath them.
>   
>   This fixes an occasional panic I've been seeing in softclock() where a bad
>   pointer would be encountered when pushing DTrace hard.
>   
>   Revision  Changes    Path
>   1.6       +2 -0      
src/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c

If you aren't holding the mutex here, then just do a callout_drain() w/o a 
callout_stop().  If you are holding the mutex here, callout_drain() can 
deadlock.  If you aren't using callout_init_mtx() but are acquiring your 
mutex in the callout handler, you will need to not reschedule yourself in 
your callout handlers if the associated "task" has been stopped (i.e. you'll 
need to check a flag after acquiring your lock and abort early if it is set, 
etc.)

-- 
John Baldwin


More information about the cvs-all mailing list