Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2009-01-03 16:54:43 +0000
committerEike Stepper2009-01-03 16:54:43 +0000
commit131eae45a63d2dbb7620b0988fa65b6d26f73f29 (patch)
tree8904c4750a1c38e04caf602752995fcd8098edb3 /plugins
parentec2f6d75ce4a7f46952868063d0afe2ab8877712 (diff)
downloadcdo-131eae45a63d2dbb7620b0988fa65b6d26f73f29.tar.gz
cdo-131eae45a63d2dbb7620b0988fa65b6d26f73f29.tar.xz
cdo-131eae45a63d2dbb7620b0988fa65b6d26f73f29.zip
[258739] Possible deadlocks in Lifecycle.java
https://bugs.eclipse.org/bugs/show_bug.cgi?id=258739
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/Channel.java4
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/ChannelMultiplexer.java16
2 files changed, 13 insertions, 7 deletions
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/Channel.java b/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/Channel.java
index 2fa4a2a490..49f7e6d2bc 100644
--- a/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/Channel.java
+++ b/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/Channel.java
@@ -172,7 +172,7 @@ public class Channel extends Lifecycle implements InternalChannel
TRACER.format("Handling buffer from multiplexer: {0} --> {1}", buffer, this); //$NON-NLS-1$
}
- receiveSerializer.addWork(craeteReceiverWork(buffer));
+ receiveSerializer.addWork(createReceiverWork(buffer));
}
else
{
@@ -181,7 +181,7 @@ public class Channel extends Lifecycle implements InternalChannel
}
}
- protected ReceiverWork craeteReceiverWork(IBuffer buffer)
+ protected ReceiverWork createReceiverWork(IBuffer buffer)
{
return new ReceiverWork(this, buffer);
}
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/ChannelMultiplexer.java b/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/ChannelMultiplexer.java
index e2e5c0d3e7..456e5d44c6 100644
--- a/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/ChannelMultiplexer.java
+++ b/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/ChannelMultiplexer.java
@@ -278,14 +278,20 @@ public abstract class ChannelMultiplexer extends Container<IChannel> implements
@Override
protected void doDeactivate() throws Exception
{
+ IChannel[] channels;
synchronized (channelIDs)
{
- for (IChannel channel : getChannels())
- {
- LifecycleUtil.deactivate(channel);
- }
+ channels = getElements();
+ }
+
+ for (IChannel channel : channels)
+ {
+ LifecycleUtil.deactivate(channel);
+ }
- channels.clear();
+ synchronized (channelIDs)
+ {
+ this.channels.clear();
}
super.doDeactivate();

Back to the top