<?xml version="1.0" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://www.jacorb.org/bugzilla/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.2"
          urlbase="https://www.jacorb.org/bugzilla/"
          
          maintainer="jacorb@goots.org"
>

    <bug>
          <bug_id>759</bug_id>
          
          <creation_ts>2007-02-09 15:39:03 +0000</creation_ts>
          <short_desc>Deadlock in GIOPConnection</short_desc>
          <delta_ts>2011-01-19 14:40:37 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>JacORB</product>
          <component>ORB</component>
          <version>2.3.0 beta 2</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>708</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Richard Ridgway">Richard_Ridgway</reporter>
          <assigned_to name="Gerald Brose">gerald.brose</assigned_to>
          <cc>Richard_Ridgway</cc>
    
    <cc>rnc</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2053</commentid>
    <comment_count>0</comment_count>
    <who name="Richard Ridgway">Richard_Ridgway</who>
    <bug_when>2007-02-09 15:39:03 +0000</bug_when>
    <thetext>Potential deadlock here due to order of getWriteLock() and synchronized
(connect_sync) calls being swopped between two methods.
I haven&apos;t analysed this fully, nor come up with a fix yet, but am working on 
it.

//////////////////////////
ClientGIOPConnection.java
//////////////////////////
    public void closeAllowReopen()
    {
        if (logger.isDebugEnabled())
        {
            logger.debug (this.toString() + &quot;: closeAllowReopen()&quot;);
        }

        try
        {
            synchronized (connect_sync)
            {
                getWriteLock();

//////////////////////////
GIOPConnection.java:
//////////////////////////
    private final void sendMessage( MessageOutputStream out )
        throws IOException
    {
        try
        {
            incPendingWrite ();
            getWriteLock();
            if (!transport.is_connected())
            {
                tcs_negotiated = false;

                if (logger.isDebugEnabled())
                {
                    logger.debug(this.toString()
                                 + &quot;: sendMessage() -- opening transport&quot;);
                }

                synchronized (connect_sync)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2054</commentid>
    <comment_count>1</comment_count>
    <who name="Richard Ridgway">Richard_Ridgway</who>
    <bug_when>2007-02-09 16:16:20 +0000</bug_when>
    <thetext>Having looked through the code, there appear to be no other places where this 
sequence occurs. As such, simply moving the getWriteLock() up above the 
synchronized(connect_sync) in ClientGIOPConnection.java will remove the 
possibility of this deadlock without any side effect.

Regards,

Richard</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2056</commentid>
    <comment_count>2</comment_count>
    <who name="Marc Heide">marc.heide</who>
    <bug_when>2007-02-12 08:50:30 +0000</bug_when>
    <thetext>Did you checked the last correction suggested for Bug 708?
I think this already addresses your problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2058</commentid>
    <comment_count>3</comment_count>
    <who name="Richard Ridgway">Richard_Ridgway</who>
    <bug_when>2007-02-19 10:40:21 +0000</bug_when>
    <thetext>Checking CVS head web interface 19/02/2007 the problem is potentially still 
here. The order of acquiring the two locks is reversed between 
ClientGIOPConnection and GIOPConnection. Whether the situation can still 
(ever?) arise may have changed, but it still makes sense to correct this code.

By the way, the download of cvs daily head snapshot for 19/02 does not contain 
source code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2347</commentid>
    <comment_count>4</comment_count>
      <attachid>357</attachid>
    <who name="Weiqi Gao">gao_w</who>
    <bug_when>2009-01-15 23:49:39 +0000</bug_when>
    <thetext>Created attachment 357
Patch for Bug 759

This patch fixes a dead lock described in this bug report.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2348</commentid>
    <comment_count>5</comment_count>
      <attachid>358</attachid>
    <who name="Weiqi Gao">gao_w</who>
    <bug_when>2009-01-15 23:50:29 +0000</bug_when>
    <thetext>Created attachment 358
ChangeLog for Patch for Bug 759

Change log for the patch that fixes a dead lock described in this bug report.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2349</commentid>
    <comment_count>6</comment_count>
    <who name="Weiqi Gao">gao_w</who>
    <bug_when>2009-01-15 23:54:37 +0000</bug_when>
    <thetext>I have attached a patch that addresses a dead lock situation stemming from this bug.  The dead lock was observed with a post 2.3.0 build that incorporated the fixes for Bug 708.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2686</commentid>
    <comment_count>7</comment_count>
    <who name="Nick Cross">rnc</who>
    <bug_when>2011-01-19 14:40:37 +0000</bug_when>
    <thetext>Patch on this ticket looks like similar code has already been applied to CVS partially as a result of 708.

*** This bug has been marked as a duplicate of bug 708 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357</attachid>
            <date>2009-01-15 23:49:39 +0000</date>
            <delta_ts>2009-01-15 23:49:39 +0000</delta_ts>
            <desc>Patch for Bug 759</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>2565</size>
            <attacher name="Weiqi Gao">gao_w</attacher>
            
              <data encoding="base64">PyBwYXRjaC5kaWZmCkluZGV4OiBvcmcvamFjb3JiL29yYi9naW9wL0NsaWVudEdJT1BDb25uZWN0
aW9uLmphdmEKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3dlYi93d3cuamFjb3JiLm9yZy9jdnMvamFj
b3JiL0phY09SQi9zcmMvb3JnL2phY29yYi9vcmIvZ2lvcC9DbGllbnRHSU9QQ29ubmVjdGlvbi5q
YXZhLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE4CmRpZmYgLXUgLXIxLjE4IENsaWVudEdJT1BD
b25uZWN0aW9uLmphdmEKLS0tIG9yZy9qYWNvcmIvb3JiL2dpb3AvQ2xpZW50R0lPUENvbm5lY3Rp
b24uamF2YQkxNCBOb3YgMjAwOCAwODo1NTozMiAtMDAwMAkxLjE4CisrKyBvcmcvamFjb3JiL29y
Yi9naW9wL0NsaWVudEdJT1BDb25uZWN0aW9uLmphdmEJMTUgSmFuIDIwMDkgMjE6NDE6MjYgLTAw
MDAKQEAgLTEyNyw5ICsxMjcsOSBAQAogCiAgICAgICAgIHRyeQogICAgICAgICB7CisgICAgICAg
ICAgICBnZXRXcml0ZUxvY2soKTsKICAgICAgICAgICAgIHN5bmNocm9uaXplZCAoY29ubmVjdF9z
eW5jKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdldFdyaXRlTG9jaygpOwogICAg
ICAgICAgICAgICAgIHRyYW5zcG9ydC5jbG9zZSgpOwogICAgICAgICAgICAgICAgIC8vIFdlIGV4
cGVjdCB0aGF0IHRoZSBzYW1lIHRyYW5zcG9ydCBjYW4gYmUgcmVjb25uZWN0ZWQKICAgICAgICAg
ICAgICAgICAvLyBhZnRlciBhIGNsb3NlLCBzb21ldGhpbmcgdGhhdCB0aGUgRVRGIGRyYWZ0IGlz
bid0CkluZGV4OiBvcmcvamFjb3JiL29yYi9naW9wL0dJT1BDb25uZWN0aW9uLmphdmEKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpSQ1MgZmlsZTogL3dlYi93d3cuamFjb3JiLm9yZy9jdnMvamFjb3JiL0phY09SQi9zcmMv
b3JnL2phY29yYi9vcmIvZ2lvcC9HSU9QQ29ubmVjdGlvbi5qYXZhLHYKcmV0cmlldmluZyByZXZp
c2lvbiAxLjY5CmRpZmYgLXUgLXIxLjY5IEdJT1BDb25uZWN0aW9uLmphdmEKLS0tIG9yZy9qYWNv
cmIvb3JiL2dpb3AvR0lPUENvbm5lY3Rpb24uamF2YQkxNCBOb3YgMjAwOCAwODo1NTozMiAtMDAw
MAkxLjY5CisrKyBvcmcvamFjb3JiL29yYi9naW9wL0dJT1BDb25uZWN0aW9uLmphdmEJMTUgSmFu
IDIwMDkgMjE6NDE6MjcgLTAwMDAKQEAgLTkxNiw2ICs5MTYsNyBAQAogICAgIHByaXZhdGUgZmlu
YWwgdm9pZCBzZW5kTWVzc2FnZSggTWVzc2FnZU91dHB1dFN0cmVhbSBvdXQgKQogICAgICAgICB0
aHJvd3MgSU9FeGNlcHRpb24KICAgICB7CisgICAgICAgIGJvb2xlYW4gcmVsZWFzZVdyaXRlTG9j
a0NhbGxlZCA9IGZhbHNlOwogICAgICAgICB0cnkKICAgICAgICAgewogICAgICAgICAgICAgaW5j
UGVuZGluZ1dyaXRlICgpOwpAQCAtOTM3LDcgKzkzOCw2IEBACiAgICAgICAgICAgICAgICAgICAg
IHRyeQogICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICB0cmFu
c3BvcnQuY29ubmVjdCAocHJvZmlsZSwgdGltZW91dCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBjb25uZWN0X3N5bmMubm90aWZ5QWxsKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZXgpCiAgICAgICAgICAgICAg
ICAgICAgIHsKQEAgLTk1MCw2ICs5NTAsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXg7CiAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7CisgICAgICAgICAgICAgICAgICAgICAgICBj
b25uZWN0X3N5bmMubm90aWZ5QWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIH0KQEAgLTk4OCw2ICs5OTEsNyBAQAogICAgICAgICAg
ICAgICAgIC8vIGNvbmN1cnJlbnRseSAodW5mb3J0dW5hdGVseSB3cml0ZSBsb2NrIGlzIHJlcXVl
c3RlZAogICAgICAgICAgICAgICAgIC8vIGR1cmluZyBzdHJlYW1DbG9zZWQoKSkKICAgICAgICAg
ICAgICAgICByZWxlYXNlV3JpdGVMb2NrKCk7CisgICAgICAgICAgICAgICAgcmVsZWFzZVdyaXRl
TG9ja0NhbGxlZCA9IHRydWU7CiAKICAgICAgICAgICAgICAgICAvLyBJdCBtYWtlcyBubyBzZW5z
ZSB0byB1c2UgdGhpcyB0cmFuc3BvcnQgYW55IGxvbmdlcgogICAgICAgICAgICAgICAgIC8vIGV4
YW1wbGVzOiBmaXJld2FsbCBkcm9wcGVkIGNvbm5lY3Rpb24gc2lsZW50bHksCkBAIC0xMDAxLDcg
KzEwMDUsOSBAQAogICAgICAgICBmaW5hbGx5CiAgICAgICAgIHsKICAgICAgICAgICAgIGRlY1Bl
bmRpbmdXcml0ZSgpOwotICAgICAgICAgICAgcmVsZWFzZVdyaXRlTG9jaygpOworICAgICAgICAg
ICAgaWYgKHJlbGVhc2VXcml0ZUxvY2tDYWxsZWQgPT0gZmFsc2UpIHsKKyAgICAgICAgICAgICAg
ICByZWxlYXNlV3JpdGVMb2NrKCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>358</attachid>
            <date>2009-01-15 23:50:29 +0000</date>
            <delta_ts>2009-01-15 23:50:29 +0000</delta_ts>
            <desc>ChangeLog for Patch for Bug 759</desc>
            <filename>ChangeLog</filename>
            <type>application/octet-stream</type>
            <size>804</size>
            <attacher name="Weiqi Gao">gao_w</attacher>
            
              <data encoding="base64">VGh1IEphbiAxNSAyMjozMTo1NCBVVEMgMjAwOSAgV2VpcWkgR2FvICA8Z2FvX3dAb2Npd2ViLmNv
bT4KCgkqIHNyYy9vcmcvamFjb3JiL29yYi9naW9wL0dJT1BDb25uZWN0aW9uLmphdmEKCSogc3Jj
L29yZy9qYWNvcmIvb3JiL2dpb3AvQ2xpZW50R0lPUENvbm5lY3Rpb24uamF2YQoKICAgICAgICAg
IFJldmVyZWQgbG9jayBhY3F1aXNpdGlvbiBvcmRlciBvZiBnZXRXcml0ZUxvY2soKSBhbmQKICAg
ICAgICAgIHN5bmNocm9uaXplZChjb25uZWN0X3N5bmMpIGluCiAgICAgICAgICBDbGllbnRHSU9Q
Q29ubmVjdGlvbi5jbG9zZUFsbG93UmVvcGVuKCkgdG8gZml4IGEKICAgICAgICAgIGEgZGVhZCBs
b2NrIGlzc3VlLgoKICAgICAgICAgIE1vdmVkIGNvbm5lY3Rfc3luYy5ub3RpZnlBbGwoKSBmcm9t
IHRoZSB0cnkgYmxvY2sgdG8KICAgICAgICAgIHRoZSBmaW5hbGx5IGJsb2NrIGluIHRoZSBzeW5j
aHJvbml6ZWQgKGNvbm5lY3Rfc3luYykKICAgICAgICAgIGJsb2NrIGluIEdJT1BDb25uZWN0aW9u
LnNlbmRNZXNzYWdlKCkgdG8gYXZvaWQgbWlzc2VkCiAgICAgICAgICBub3RpZnlBbGxzIGZvciB0
aGUgZXhjZXB0aW9uYWwgcGF0aC4KCiAgICAgICAgICBBZGRlZCBhIGJvb2xlYW4gdG8gdHJhY2sg
aWYgcmVsZWFzZVdyaXRlTG9jaygpIGlzCiAgICAgICAgICBjYWxsZWQgaW4gdGhlIGNhdGNoIChv
cmcub21nLkNPUkJBLkNPTU1fRkFJTFVSRSBlKQogICAgICAgICAgYmxvY2sgdG8gYXZvaWQgY2Fs
bGluZyByZWxlYXNlV3JpdGVMb2NrKCkgYWdhaW4gaW4KICAgICAgICAgIHRoZSBmaW5hbGx5IGJs
b2NrLgoK
</data>

          </attachment>
      

    </bug>

</bugzilla>