On Saturday 18 April 2009 15:00:42 j16sdiz at freenetproject.org wrote:
> Author: j16sdiz
> Date: 2009-04-18 14:00:42 +0000 (Sat, 18 Apr 2009)
> New Revision: 26969
>
> Modified:
> trunk/freenet/src/freenet/node/FailureTable.java
> Log:
> Synchroized for update while cleanup
>
> Modified: trunk/freenet/src/freenet/node/FailureTable.java
> ===================================================================
> --- trunk/freenet/src/freenet/node/FailureTable.java 2009-04-18 14:00:15 UTC
(rev 26968)
> +++ trunk/freenet/src/freenet/node/FailureTable.java 2009-04-18 14:00:42 UTC
(rev 26969)
> @@ -614,6 +614,7 @@
> entriesByKey.valuesToArray(entries);
> }
> for(int i=0;i<entries.length;i++) {
> + synchronized(entries[i]) {
> if(entries[i].cleanup()) {
> synchronized(FailureTable.this) {
> if(entries[i].isEmpty()) {
> @@ -621,6 +622,7 @@
> }
> }
> }
> + }
This will deadlock. We always take the FailureTable lock FIRST. I have
committed a fix in 323a109.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 835 bytes
Desc: This is a digitally signed message part.
URL:
<https://emu.freenetproject.org/pipermail/devl/attachments/20090428/3aca7af3/attachment.pgp>