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.