https://bz.apache.org/ooo/show_bug.cgi?id=126586

          Issue ID: 126586
        Issue Type: DEFECT
           Summary: automation deadlock: osl_closeSocket() doesn't wake up
                    thread stuck in accept()
           Product: General
           Version: 4.1.1
          Hardware: All
                OS: FreeBSD
            Status: CONFIRMED
          Severity: normal
          Priority: P5
         Component: code
          Assignee: [email protected]
          Reporter: [email protected]

On FreeBSD (and I presume other *BSDs), when running the graphical tests (ie.
run "ant" in the aoo/tests directory), there are many test errors and after the
tests several instances of AOO are running in the background and need to be
killed.

I ran AOO exactly how the tests run it on Linux and on FreeBSD and compared the
difference:

"/AOO/main/instsetoo_native/unxfbsdx/Apache_OpenOffice/installed/install/en-US/openoffice4/program/soffice"
"-automationport=12479" "-enableautomation" "-86fe1abe16f242ccb73ee2bad8cbcffa"
"-nofirststartwizard" "-norestore" "-quickstart=no"

On Linux exiting by clicking the "X" in the top-right corner of the window
causes it to immediately exit and control to return to the command prompt. On
FreeBSD that doesn't happen: control doesn't return to the command prompt, AOO
is **DEADLOCKED**.

Running "thread apply all bt" in gdb shows why: in the main/automation module,
one thread closes a socket and is trying to join another, but that other is
still stuck in accept() on that closed socket, hopelessly waiting for clients
to connect. Digging deeper, I saw why: when one thread closes a socket, and
another thread is in accept() on that socket, that other thread doesn't return
from accept(). The socket code in main/sal/osl/unx has a workaround for this,
but it's "#if defined(LINUX)".

-- 
You are receiving this mail because:
You are the assignee for the issue.

Reply via email to