DC++ bzr 2397 debug-mingw build hangs on quit under WINE 1.3.11

Bug #704743 reported by cologic on 2011-01-19
This bug affects 1 person
Affects Status Importance Assigned to Milestone

Bug Description

Steps to reproduce:
(1) Create clean directory with nothing but DCPlusPlus.exe and DCPlusPlus.xml with contents of dcpp.exe (see the cp command in posted log; it makes repeated testing under controlled conditions easier).
(2) Run that DCPlusPlus.exe under WINE. I first noticed it around WINE 1.3.8 or 1.3.9, but it's persisted unchanged through 1.3.11, the current version.
(3) Quit DC++.

Expected result: DC++ quits. Actual result: DC++'s GUI window disappears, but the process continues to run. I've attached a console log of what happens and the environment under which it occurs. The Ctrl-C is where I have to force-close WINE because DC++ has hung. This does not require opening any hubs, initiating any file transfers, or even opening a tab/within-DC++-window and does not depend on having a share defined. It happens 100% reliably.

% ls
DCPlusPlus.exe DCPlusPlus.xml dcpp.xml
% wine --version
% i686-pc-mingw32-g++ --version
i686-pc-mingw32-g++ (GCC) 4.5.2
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO

% i686-pc-mingw32-ld --version
GNU ld (GNU Binutils) 2.21
Copyright 2010 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later version.
This program has absolutely no warranty.
deverlin% cat dcpp.xml
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
  <Nick type="string">nick</Nick>
% cp dcpp.xml DCPlusPlus.xml && wine DCPlusPlus.exe
fixme:process:SetProcessDEPPolicy (1): stub
SetProcessDEPPolicy failed
Thrown: FileException: File not found
Thrown: FileException: File not found
fixme:toolhelp:CreateToolhelp32Snapshot Unimplemented: heap list snapshot
fixme:toolhelp:Heap32ListFirst : stub
Thrown: FileException: File not found
Thrown: FileException: File not found
FavoriteManager::load: FileException: File not found
Thrown: FileException: File not found
Thrown: FileException: File not found
FileException: File not found
Thrown: FileException: File not found
Thrown: FileException: File not found
BufferedSocket::connect() 001d0258
BufferedSocket::run() start 001d0258
threadConnect dcplusplus.sourceforge.net.nyud.net:0/80
threadConnect attempt to addr "dcplusplus.sourceforge.net.nyud.net"
HTTP/1.1 200 OK
BufferedSocket::run() end 001d0258
^Cfixme:console:CONSOLE_DefaultHandler Terminating process 32 on event 0

cologic (cologic) wrote :

Apparently this has been a known issue with the DC++/WINE interaction for almost 10 months now: http://bugs.winehq.org/show_bug.cgi?id=22291

http://bugs.winehq.org/show_bug.cgi?id=22291#c19 from June 2010 is the main interesting patch from there. The reference to https://bugzilla.kernel.org/show_bug.cgi?id=546 suggests that DC++ might be triggering a fundamentally non-portable behavior that it's up to DC++ to finally resolve.

Changed in dcplusplus:
status: New → Confirmed
cologic (cologic) wrote :

Merely disabling the UDP search listener, as the attached (obviously infeasible for actual usage) patch does, 'fixes' this bug.

Jacek Sieka (arnetheduck) wrote :

Well, I would definitely call this a wine bug - they implement the windows api so they should follow windows conventions. That said, I guess the fix is not far away since you've narrowed down the problem...you're even welcome to commit it should you actually do a fix, it hits me too =)

cologic (cologic) wrote :

Reproduction method #2: switch from active to passive mode (which also attempts to shut down the search listener).

cologic (cologic) on 2011-02-03
Changed in dcplusplus:
status: Confirmed → Fix Committed
poy (poy) wrote :

Fixed in DC++ 0.782.

Changed in dcplusplus:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.