[Mono-bugs] [Bug 323524] Mono 1.2.3 Solaris build has problems with Socket.BeginConnect

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Wed Nov 21 14:00:24 EST 2007


https://bugzilla.novell.com/show_bug.cgi?id=323524#c4


Burkhard Linke <burkhard.linke at CeBiTec.Uni-Bielefeld.DE> changed:

           What    |Removed                                         |Added
----------------------------------------------------------------------------
             Status|NEEDINFO                                        |ASSIGNED
      Info Provider|psingh at fnfr.com                                 |




--- Comment #4 from Burkhard Linke <burkhard.linke at CeBiTec.Uni-Bielefeld.DE>  2007-11-21 12:00:24 MST ---
I've traced the mono runtime using dtrace and a little script that lists the
syscalls and scheduling action of the solaris kernel for the most recent thread
(the mono io thread, thread id 4 in the output):

started syscall pollsys in thread 4, initiated by

              libc.so.1`__pollsys+0x7
              libc.so.1`poll+0x52
              mono`mono_poll+0x21
              mono`socket_io_poll_main+0x8c
              mono`start_wrapper+0xcf
              mono`thread_start_routine+0xae
              libgc.so.1.0.3`GC_inner_start_routine+0xd0
              libgc.so.1.0.3`GC_call_with_stack_base+0x1c
              libgc.so.1.0.3`GC_start_routine+0x28
              libc.so.1`_thr_setup+0x4e
              libc.so.1`_lwp_start
started syscall read in thread 4, initiated by

              libc.so.1`_read+0x7
              mono`socket_io_poll_main+0x18e
              mono`start_wrapper+0xcf
              mono`thread_start_routine+0xae
              libgc.so.1.0.3`GC_inner_start_routine+0xd0
              libgc.so.1.0.3`GC_call_with_stack_base+0x1c
              libgc.so.1.0.3`GC_start_routine+0x28
              libc.so.1`_thr_setup+0x4e
              libc.so.1`_lwp_start
started syscall gtime in thread 4, initiated by

              libc.so.1`__time+0x7
              mono`_wapi_handle_ref+0x1f
              mono`sem_release+0x255
              mono`ReleaseSemaphore+0x3a
              mono`socket_io_poll_main+0x1c3
              mono`start_wrapper+0xcf
              mono`thread_start_routine+0xae
              libgc.so.1.0.3`GC_inner_start_routine+0xd0
              libgc.so.1.0.3`GC_call_with_stack_base+0x1c
              libgc.so.1.0.3`GC_start_routine+0x28
              libc.so.1`_thr_setup+0x4e
              libc.so.1`_lwp_start
started syscall pollsys in thread 4, initiated by

              libc.so.1`__pollsys+0x7
              libc.so.1`poll+0x52
              mono`mono_poll+0x21
              mono`socket_io_poll_main+0x8c
              mono`start_wrapper+0xcf
              mono`thread_start_routine+0xae
              libgc.so.1.0.3`GC_inner_start_routine+0xd0
              libgc.so.1.0.3`GC_call_with_stack_base+0x1c
              libgc.so.1.0.3`GC_start_routine+0x28
              libc.so.1`_thr_setup+0x4e
              libc.so.1`_lwp_start
got sched probe sleep for tid 4
got sched probe dequeue for tid 4
got sched probe off-cpu for tid 4

(The build uses a local installation of libgc, since the version inside the
mono source tree is updated with respect to solaris/x86.)

The next traces of thread 4:

got sched probe on-cpu for tid 4
started syscall lwp_mutex_timedlock in thread 4, initiated by

              ld.so.1`___lwp_mutex_timedlock+0x7
              ld.so.1`rt_mutex_lock+0x1b
              ld.so.1`enter+0x30
              ld.so.1`elf_bndr+0x25
              ld.so.1`elf_rtbndr+0x14
              ld.so.1`0xbfffd8f8
              mono`thread_cleanup+0x1c
              mono`start_wrapper+0xd9
              mono`thread_start_routine+0xae
              libgc.so.1.0.3`GC_inner_start_routine+0xd0
              libgc.so.1.0.3`GC_call_with_stack_base+0x1c
              libgc.so.1.0.3`GC_start_routine+0x28
              libc.so.1`_thr_setup+0x4e
              libc.so.1`_lwp_start

This happens after the connect timeout and the thread is about to terminate.
The problem seems to be located in the socket_io_poll_main() routine in
mono/metadata/threadpool.c. Solaris does not support epoll, so
socket_io_epoll_main cannot be used on this platform. I haven't figured out the
complete code in threadpool.c yet, but the problem should be located there.


-- 
Configure bugmail: https://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