RT RT/krbdev.mit.edu: Ticket #2755 push yarrow locking down into the yarrow code to reduce contention Signed in as guest.
[Logout]

[Home] [Search] [Configuration]

[Display] [History] [Basics] [Dates] [People] [Links] [Jumbo]

 
 

 The Basics  
Id
2755
Status
resolved
Worked
0 min
Priority
0/0
Queue
krb5
 

 Keyword Selections  
Component
  • krb5-libs
Version_reported
Version_Fixed
  • 1.4
Target_Version
  • 1.4
Tags
  • pullup
 

 Relationships  
Depends on:
Depended on by:
Parents:
Children:

Refers to:
  • 1303: (raeburn) thread safety in mit-krb5 libraries [resolved]
Referred to by:
 
 Dates  
Created: Fri Oct 29 20:56:34 2004
Starts: Not set
Started: Fri Oct 29 20:56:36 2004
Last Contact: Tue Dec 7 22:26:04 2004
Due: Not set
Updated: Wed Dec 8 18:13:11 2004 by tlyu
 

 People  
Owner
 raeburn
Requestors
 raeburn@mit.edu
Cc
 
AdminCc
 
 

 More about Ken Raeburn  
Comments about this user:
No comment entered about this user
This user's 25 highest priority tickets:
 

History   Display mode: [Brief headers] [Full headers]
      Fri Oct 29 20:56:34 2004  raeburn - Ticket created    
     
From: raeburn@mit.edu
Subject: CVS Commit

This seems to speed up creating a krb5_context a little bit, when it happens
a lot in multiple threads.

* prng.c (yarrow_lock): Rename to krb5int_yarrow_lock via macro, and change to
be non-static.
(krb5int_prng_init): Call do_yarrow_init here.
(krb5_c_random_add_entropy): Don't call it here.  Don't lock the mutex, either.
(krb5_c_random_make_octets): Don't lock the mutex.
* yarrow/ylock.h: Include k5-thread.h.
(krb5int_yarrow_lock): Declare.
(LOCK, UNLOCK): Define as macros using the k5_mutex_ macros.


To generate a diff of this commit:



	cvs diff -r5.168 -r5.169 krb5/src/lib/crypto/ChangeLog
	cvs diff -r5.20 -r5.21 krb5/src/lib/crypto/prng.c
	cvs diff -r1.17 -r1.18 krb5/src/lib/crypto/yarrow/ChangeLog
	cvs diff -r1.3 -r1.4 krb5/src/lib/crypto/yarrow/ylock.h


Download (untitled) 774b
      Fri Oct 29 20:56:36 2004  raeburn - Status changed from new to resolved    
      Fri Oct 29 20:56:37 2004  raeburn - Requestor raeburn@mit.edu added    
      Sat Oct 30 05:05:52 2004  raeburn - Comments added    
     
Cc: Ken Raeburn <raeburn@mit.edu>, krb5-prs@mit.edu
From: Ken Raeburn <raeburn@MIT.EDU>
Subject: Re: [krbdev.mit.edu #2755] CVS Commit 
Date: Sat, 30 Oct 2004 05:05:42 -0400
To: rt-comment@krbdev.mit.edu
RT-Send-Cc: 

Oops.  There are some locking bugs in the yarrow code.  Working on it.



Download (untitled) 72b
      Mon Nov  1 16:53:06 2004  raeburn - Ticket 2758: Ticket created    
     
To: krb5-bugs@mit.edu
From: Ken Raeburn <raeburn@mit.edu>
Date: Mon, 1 Nov 2004 16:52:54 -0500
Subject: yarrow locking broken on 1.4 branch

Sorry, should've opened a ticket when I checked this in...

Begin forwarded message:

> From: raeburn@MIT.EDU
> Date: November 1, 2004 16:33:09 EST
> To: cvs-krb5@mit.edu
> Subject: CVS report: krb5/src/lib/crypto/yarrow ChangeLog yarrow.c
> Reply-To: krbdev@MIT.EDU, raeburn@MIT.EDU
> X-Spam-Score: -5.651
>
> Module Name:	krb5
> Committed By:	raeburn
> Date:		Mon Nov  1 21:33:06 UTC 2004
>
> Modified Files:
> 	 krb5/src/lib/crypto/yarrow/ChangeLog
> 		krb5/src/lib/crypto/yarrow/yarrow.c
> Added Files:
>
> Removed Files:
>
>
> Log Message
> * yarrow.c (krb5int_yarrow_input, krb5int_yarrow_final): Don't check
> for
> forking here.
> (yarrow_output_locked): Split out from krb5int_yarrow_output, without
> locking.
> (krb5int_yarrow_output): Do locking and call yarrow_output_locked.
> (yarrow_gate_locked): New function; uses yarrow_output_locked.
> (krb5int_yarrow_output_Block): Use yarrow_gate_locked.
>
>
> To generate a diff of this commit:
> 	cvs diff -r1.18 -r1.19 krb5/src/lib/crypto/yarrow/ChangeLog
> 	cvs diff -r1.11 -r1.12 krb5/src/lib/crypto/yarrow/yarrow.c
> _______________________________________________
> cvs-krb5 mailing list
> cvs-krb5@mit.edu
> https://mailman.mit.edu/mailman/listinfo/cvs-krb5



Download (untitled) 1.1k
      Tue Nov  2 10:41:08 2004  hartmans - Ticket 2758: Correspondence added    
     
To: rt@krbdev.mit.edu
Cc: 
Subject: Re: [krbdev.mit.edu #2758] yarrow locking broken on 1.4 branch
From: Sam Hartman <hartmans@mit.edu>
Date: Tue, 02 Nov 2004 10:41:05 -0500
RT-Send-Cc: 

Where do you end up doing the fork check then?



Download (untitled) 48b
      Tue Nov  2 13:06:47 2004  raeburn - Ticket 2758: Comments added    
     
Cc: Ken Raeburn <raeburn@mit.edu>, krb5-prs@mit.edu
From: Ken Raeburn <raeburn@MIT.EDU>
Subject: Re: [krbdev.mit.edu #2758] yarrow locking broken on 1.4 branch
Date: Tue, 2 Nov 2004 13:06:42 -0500
To: rt-comment@krbdev.mit.edu
RT-Send-Cc: 

On Nov 2, 2004, at 10:41, Sam Hartman via RT wrote:

> Where do you end up doing the fork check then?

There's still a check before generating output.  That should be enough,
shouldn't it?




Download (untitled) 192b
      Tue Nov  2 17:21:25 2004  raeburn - Ticket 2758: Component krb5-libs added    
      Tue Nov  2 17:21:26 2004  raeburn - Ticket 2758: Target_Version 1.4 added    
      Tue Nov  2 17:21:26 2004  raeburn - Ticket 2758: Tags pullup added    
      Tue Nov  2 17:22:08 2004  raeburn - Status changed from resolved to open    
      Tue Nov  2 17:22:08 2004  raeburn - Component krb5-libs added    
      Tue Nov  2 17:22:08 2004  raeburn - Target_Version 1.4 added    
      Tue Nov  2 20:50:43 2004  raeburn - Status changed from open to resolved    
      Tue Nov  2 20:50:44 2004  raeburn - Tags pullup added    
      Tue Nov  2 20:53:46 2004  raeburn - Keyword pullup deleted    
      Mon Nov 15 16:46:11 2004  raeburn - Ticket 2758: Ticket 2758 MergedInto ticket 2755.    
      Mon Nov 15 16:46:49 2004  raeburn - Status changed from resolved to open    
      Mon Nov 15 16:48:12 2004  raeburn - Comments added    
     
The alpha-netbsd build is failing nightly tests with:

KRB5_CONFIG=./../../../config-files/krb5.conf ./t_cksum4 "this is a test"
assertion "(&(&_m->os)->n)->initialized == K5_MUTEX_DEBUG_INITIALIZED"
failed: file "yarrow.c", line 174, function "krb5int_yarrow_init"
[1]   Abort trap (core dumped) KRB5_CONFIG=./.....
*** Error code 134


Download (untitled) 335b
      Wed Nov 17 16:56:28 2004  raeburn - Comments added    
     
> The alpha-netbsd build is failing nightly tests with:
> assertion "(&(&_m->os)->n)->initialized == K5_MUTEX_DEBUG_INITIALIZED"
> failed: file "yarrow.c", line 174, function "krb5int_yarrow_init"

Oops again.  This checkin should fix that:

2004-11-17  Ken Raeburn  <raeburn@mit.edu>

	* prng.c (do_yarrow_init): Move mutex initialization here.
	(krb5int_prng_init): Don't do it here.

lib/crypto/prng.c 5.22
lib/crypto/ChangeLog 5.171


Download (untitled) 436b
      Mon Nov 22 22:15:18 2004  raeburn - Correspondence added    
     
From: raeburn@mit.edu
Subject: CVS Commit

KDC on Tru64 was hanging because of another case where Yarrow code
assumes locks are recursive.  Probably didn't trigger on Linux,
Solaris, or NetBSD because they have /dev/random and Tru64 does not.

* yarrow.c (yarrow_input_maybe_locking): Renamed from
yarrow_input_maybe_locking, made static.  New argument indicates whether or not
to do locking.
(krb5int_yarrow_input): New wrapper function.
(yarrow_input_locked): New wrapper function.
(Yarrow_detect_fork): Call yarrow_input_locked.


To generate a diff of this commit:



	cvs diff -r1.20 -r1.21 krb5/src/lib/crypto/yarrow/ChangeLog
	cvs diff -r1.12 -r1.13 krb5/src/lib/crypto/yarrow/yarrow.c


Download (untitled) 650b
      Tue Dec  7 21:02:12 2004  raeburn - Status changed from open to resolved    
      Tue Dec  7 21:02:12 2004  raeburn - Tags pullup added    
      Tue Dec  7 21:02:13 2004  raeburn - Comments added    
     
Seems to be ready.


Download (untitled) 18b
      Tue Dec  7 22:26:01 2004  tlyu - Version_Fixed 1.4 added    
      Tue Dec  7 22:26:02 2004  tlyu - Correspondence added    
     
From: tlyu@mit.edu
Subject: CVS Commit

pullup from trunk


To generate a diff of this commit:



	cvs diff -r5.168.4.1 -r5.168.4.2 krb5/src/lib/crypto/ChangeLog
	cvs diff -r5.20 -r5.20.4.1 krb5/src/lib/crypto/prng.c
	cvs diff -r1.17.4.1 -r1.17.4.2 krb5/src/lib/crypto/yarrow/ChangeLog
	cvs diff -r1.11 -r1.11.4.1 krb5/src/lib/crypto/yarrow/yarrow.c
	cvs diff -r1.3 -r1.3.10.1 krb5/src/lib/crypto/yarrow/ylock.h


Download (untitled) 372b
      Wed Dec  8 18:13:10 2004  tlyu - Ticket 2755 RefersTo ticket 1303.