[Mono-bugs] [Bug 524984] New: ASMX web service proxy call causes delay/failure to return to shell (Mono 2.4.2.2)

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Fri Jul 24 08:14:00 EDT 2009


http://bugzilla.novell.com/show_bug.cgi?id=524984


           Summary: ASMX web service proxy call causes delay/failure to
                    return to shell (Mono 2.4.2.2)
    Classification: Mono
           Product: Mono: Runtime
           Version: 2.4.x
          Platform: x86-64
        OS/Version: Ubuntu
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: misc
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: apenn at hchb.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---


Created an attachment (id=307530)
 --> (http://bugzilla.novell.com/attachment.cgi?id=307530)
VS 2008-generated basic HTTP proxy class

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.1)
Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)

The Mono application is a basic console app assembled in Visual Studio 2008
that uses the old "Add web reference" (ASMX web service) functionality to get a
proxy class for calling a web service. It runs fine, but after executing and
returning its output, I noticed that there is a sizeable delay before it
returns control to the shell. Sometimes it NEVER returns control and has to be
signaled to exit.

I ran an strace of the application and the delay occurs during this portion of
the trace, correlated with all the ETIMEDOUT futex results:

write(1, "OK|TimeCacheMs=280.683, TimeNoCac"..., 45OK|TimeCacheMs=280.683,
TimeNoCacheMs=279.611) = 45
write(1, "\n"..., 1
)                    = 1
futex(0x1c6ab9c, FUTEX_CMP_REQUEUE_PRIVATE, 1, 2147483647, 0x1c6ab70, 6) = 2
futex(0x1c6ab70, FUTEX_WAKE_PRIVATE, 1) = 1
tgkill(4218, 4228, SIGRT_3)             = 0
futex(0x1c6ab9c, FUTEX_CMP_REQUEUE_PRIVATE, 1, 2147483647, 0x1c6ab70, 10) = 1
futex(0x1c6ab70, FUTEX_WAKE_PRIVATE, 1) = 1
tgkill(4218, 4229, SIGRT_3)             = 0
tgkill(4218, 4236, SIGRT_3)             = 0
futex(0x1c6ac64, FUTEX_CMP_REQUEUE_PRIVATE, 1, 2147483647, 0x1c6ac38, 4) = 1
futex(0x1c6ac38, FUTEX_WAKE_PRIVATE, 1) = 1
tgkill(4218, 4235, SIGRT_3)             = 0
futex(0x1c6ac64, FUTEX_CMP_REQUEUE_PRIVATE, 1, 2147483647, 0x1c6ac38, 6) = 1
futex(0x1c6ac38, FUTEX_WAKE_PRIVATE, 1) = 1
tgkill(4218, 4246, SIGRT_3)             = 0
futex(0x1c6c17c, FUTEX_CMP_REQUEUE_PRIVATE, 1, 2147483647, 0x1c6c150, 4) = 1
futex(0x1c6c150, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x872f80, FUTEX_WAIT_PRIVATE, 2, NULL) = -1 EAGAIN (Resource temporarily
unavailable)
futex(0x872f80, FUTEX_WAKE_PRIVATE, 1)  = 0
tgkill(4218, 4234, SIGRT_3)             = 0
tgkill(4218, 4247, SIGRT_3)             = 0
futex(0x1c6c17c, FUTEX_CMP_REQUEUE_PRIVATE, 1, 2147483647, 0x1c6c150, 6) = 1
futex(0x1c6c150, FUTEX_WAKE_PRIVATE, 1) = 1
tgkill(4218, 4242, SIGRT_3)             = 0
semop(46727225, 0x7fff817bf250, 1)      = 0
semop(46727225, 0x7fff817bf2a0, 1)      = 0
futex(0x1c6ab9c, FUTEX_WAIT_PRIVATE, 11, {0, 99381733}) = -1 ETIMEDOUT
(Connection timed out)
futex(0x1c6ab70, FUTEX_WAKE_PRIVATE, 1) = 0
semop(46727225, 0x7fff817bf250, 1)      = 0
semop(46727225, 0x7fff817bf2a0, 1)      = 0
futex(0x1c6d11c, FUTEX_WAIT_PRIVATE, 1, {0, 99726300}) = -1 ETIMEDOUT
(Connection timed out)
futex(0x1c6d0f0, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x1c6d11c, FUTEX_WAIT_PRIVATE, 3, {0, 99803757}) = -1 ETIMEDOUT
(Connection timed out)
futex(0x1c6d0f0, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x1c6d11c, FUTEX_WAIT_PRIVATE, 5, {0, 99857679}) = -1 ETIMEDOUT
(Connection timed out)
futex(0x1c6d0f0, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x1c6d11c, FUTEX_WAIT_PRIVATE, 7, {0, 99851220}) = -1 ETIMEDOUT
(Connection timed out)
futex(0x1c6d0f0, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x1c6d11c, FUTEX_WAIT_PRIVATE, 9, {0, 99753340}) = ?
ERESTART_RESTARTBLOCK (To be restarted)
--- SIGCONT (Continued) @ 0 (0) ---
restart_syscall(<... resuming interrupted call ...>) = -1 ETIMEDOUT (Connection
timed out)
futex(0x1c6d0f0, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x1c6d11c, FUTEX_WAIT_PRIVATE, 11, {0, 99787564}) = ?
ERESTART_RESTARTBLOCK (To be restarted)
--- SIGCONT (Continued) @ 0 (0) ---
restart_syscall(<... resuming interrupted call ...>) = -1 ETIMEDOUT (Connection
timed out)
futex(0x1c6d0f0, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x1c6d11c, FUTEX_WAIT_PRIVATE, 13, {0, 99797939}) = -1 ETIMEDOUT
(Connection timed out)
futex(0x1c6d0f0, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x1c6d11c, FUTEX_WAIT_PRIVATE, 15, {0, 99809840}) = -1 ETIMEDOUT
(Connection timed out)
futex(0x1c6d0f0, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x1c6d11c, FUTEX_WAIT_PRIVATE, 17, {0, 99797601}) = -1 ETIMEDOUT
(Connection timed out)
futex(0x1c6d0f0, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x1c6d11c, FUTEX_WAIT_PRIVATE, 19, {0, 99803384}) = -1 ETIMEDOUT
(Connection timed out)
futex(0x1c6d0f0, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x1c6d11c, FUTEX_WAIT_PRIVATE, 21, {0, 99783989}) = ?
ERESTART_RESTARTBLOCK (To be restarted)
--- SIGCONT (Continued) @ 0 (0) ---
restart_syscall(<... resuming interrupted call ...>) = ? ERESTART_RESTARTBLOCK
(To be restarted)
--- SIGCONT (Continued) @ 0 (0) ---
restart_syscall(<... resuming interrupted call ...>) = -1 ETIMEDOUT (Connection
timed out)
futex(0x1c6d0f0, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x1c6d11c, FUTEX_WAIT_PRIVATE, 23, {0, 99778668}) = ?
ERESTART_RESTARTBLOCK (To be restarted)
--- SIGCONT (Continued) @ 0 (0) ---
restart_syscall(<... resuming interrupted call ...>) = -1 ETIMEDOUT (Connection
timed out)
futex(0x1c6d0f0, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x1c6d11c, FUTEX_WAIT_PRIVATE, 25, {0, 99796480}) = -1 ETIMEDOUT
(Connection timed out)


I tried various things to see what causes the delay. If I create the proxy
class in the code but don't call it, the delay does not occur. Once the proxy
class has been used, the shutdown delay happens every time. I will attach the
proxy class, but it's simply the auto-generated one from Visual Studio 2008.

There are many other Mono apps running on our server and none of the others
exhibit this problem (or call ASMX web services, for that matter). 


Reproducible: Always

Steps to Reproduce:
1. Create ASMX (basic HTTP binding) web service proxy with Visual Studio 2008.
2. Create an instance of the proxy and call the web service.
3. Allow the application to terminate. Note the delay before the app returns
control to the shell once its execution is complete. Strace this and see
ETIMEDOUT results.
Actual Results:  
Sizeable delay occurred, and ETIMEDOUT repeatedly reported on strace output
during the delay.

Expected Results:  
Control to the shell should be immediately returned.

-- 
Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the mono-bugs mailing list