On 09/01/09 23:02, Steve Gonczi wrote:
> Hello,
>
> I am debuggin a doors problem.  My question is: how should I interpret the 
> door_pc field in the door_node? 
>  As per the Mauro/McDougall book it contains the address of the function that 
> services the door.
>
> It does not look like a fully formed 64 bit address, as I cannot just do a 
> xxxx:dis on it.
> Looks more like some sort of an offset, but an offset from what?
>   
   The door_pc points to the address of the user land function (server 
procedure parameter of door_create(3DOOR)
   which gets executed when the door_call is made.
   Doing ::dis on that address does not work when 'mdb' is invoked as 
'mdb -k'.
   You could do the ::dis on door_pc when mdb is inovked on the door 
server process [mdb -p <pid>]
> I am looking at a  CIFS problem that surfaced recently. I see many smb 
> threads stuck 
> waiting forever on pool->dp_cv having called into door_get_server().  
> Obviously there are no threads
>  available in the thread pool of whatever this particular door is.
>
> It would be interesting to know which function, and perhaps walk the threads 
> in the 
>  door's thread pool. Are they blocked? Did they go away but forgot to call
> door_release_server()?  
>  
> Any elucidation of the door_pc field would be much appreciated.
> A hint on walking the thread pool of a given door would also be useful.
>   
  You would have to chase the 'dp_threads' member of the door_node and 
then follow the kthread's t_door
  which is 'struct door data' and use the d_server member of it.

Pramod

> Steve
>   

Reply via email to