[jcifs] Deadlock while cleaning up old sessions in transport
Felix Schumacher
felix.schumacher at internetallee.de
Mon Aug 13 11:04:45 GMT 2007
Sorry for not including the patch. My Mailclient seems to have a problem.
The interested can find the patch at
http://felix.internetallee.de/temp/jcifs_1.2.16-replace_setupDiscoLock.patch
Bye
Felix
Am Mo, 13.08.2007, 11:15, schrieb Felix Schumacher:
> Hi all,
>
> We hit the deadlock (which haunts the archives since a long time) while
> cleaning up old sessions in transport, too.
> When we traced the usage of setupDiscoLock, it became clear, that it was
> called in different order in some paths to treeConnect.
> When called from logoff() it would first lock transport and after that it
> would try to get setupDiscoLock.
> When someone came into treeConnect without any lock that someone would try
> to get setupDiscoLock first. (So you get your dining philosopher problem)
>
> To stop this problem you would have to always lock setupDiscoLock first,
> but in that case you could use the transport lock instead and get rid of
> setupDiscoLock and make the philosophers use only on fork.
>
> This is what the attached patch tries to accomplish.
>
> With it applied we could not reproduce the deadlock anymore.
>
> Bye
> Felix
>
> PS. Why is the cleanup not done in its own thread? The way it is now
> implemented will punish somone who just tried to login and gets a new
> session.
>
>
>
>
More information about the jcifs
mailing list