Bug 223623 - bittorrent-5.0.5 and wxPython-2.8
bittorrent-5.0.5 and wxPython-2.8
Product: Fedora
Classification: Fedora
Component: bittorrent (Show other bugs)
i386 Linux
medium Severity urgent
: ---
: ---
Assigned To: Paul Howarth
Fedora Extras Quality Assurance
: 223636 229507 (view as bug list)
Depends On:
Blocks: 223424 235620
  Show dependency treegraph
Reported: 2007-01-20 17:35 EST by kmberry
Modified: 2008-04-09 05:08 EDT (History)
5 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2008-04-09 05:08:50 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description kmberry 2007-01-20 17:35:19 EST
Description of problem:
Gui won't start

Version-Release number of selected component (if applicable):

How reproducible:
On fc7 install bittorrent-5.0.5-1

Steps to Reproduce:
1.Update from working fc7 bittorrent-4.4.0-3 which was response to wxPython-2.8
coming out to bittorrent-5.0.5 which has same problem as code at bittorrent site
which only works with python-2.4.
Actual results:
No gui

Expected results:

Additional info:
See my comment to Bug 223424 where someone wants 5.0.5 in fc6 extras.
Comment 1 Paul Howarth 2007-01-23 12:25:57 EST
Actually the 4.4.0-3 build in Rawhide was for the update to python 2.5.

This issue appears to be related to the move to wx 2.8 rather than python 2.5,
as an FC6 system upgraded to wx 2.8 has exactly the same problem.

The initial 2.8 incompatibilities and deprecation warnings can be addressed by
changing the wxversion request to 2.8 and commenting out the wxPython references:

$ cd /usr/lib/python2.5/site-packages/BitTorrent/GUI_wx/
$ diff -u __init__.py.orig __init__.py
--- __init__.py.orig    2007-01-21 07:06:51.000000000 -0500
+++ __init__.py 2007-01-22 04:38:13.000000000 -0500
@@ -22,13 +22,13 @@
     # doesn't work in py2exe
-        wxversion.select('2.6')
+        wxversion.select('2.8')
 import wx
 import wx.grid
-import wxPython
+# import wxPython
 from BTL.translation import _
 from BitTorrent.platform import image_root
@@ -36,9 +36,9 @@
 from BTL.defer import ThreadedDeferred
 import bisect
-vs = wxPython.__version__
-min_wxpython = "2.6"
-assert vs >= min_wxpython, _("wxPython version %s or newer required") %
+#vs = wxPython.__version__
+#min_wxpython = "2.6"
+#assert vs >= min_wxpython, _("wxPython version %s or newer required") %
 assert 'unicode' in wx.PlatformInfo, _("The Unicode versions of wx and wxPython
are required")
 text_wrappable = wx.__version__[4] >= '2'

Running "bittorrent" then results in a segfault at line 2898 of
DownloadManager.py, which is:

wx.LogGeneric(level, v_msg)

The log message concerned is "[5.0.5] [NatTraversal] Trying: ManualUPnP"

Commenting out this line results in a segfault at the next wx call. I did manage
to get a backtrace from a core dump:

Core was generated by `/usr/bin/python /usr/bin/bittorrent'.
Program terminated with signal 11, Segmentation fault.
#0  wxLog::OnLog (level=5, szString=0x1bac2b8, t=1169565034) at
337                     pLogger->DoLog(level, szString, t);


Thread 1 (process 32154):
#0  wxLog::OnLog (level=5, szString=0x1bac2b8, t=1169565034) at
        pLogger = (wxLog *) 0x170ab80
#1  0x00002aaab47b99dd in wxVLogGeneric (level=5, szFormat=0x1ba57e8,
argptr=0x7fff2fddaa90) at src/common/log.cpp:90
No locals.
#2  0x00002aaab47b9ac8 in wxLogGeneric (level=24161152, szFormat=0x5) at
        argptr = {{gp_offset = 16, fp_offset = 48, overflow_arg_area =
0x7fff2fddab70, reg_save_area = 0x7fff2fddaab0}}
#3  0x00002aaab5a0dee9 in wxPyLogGeneric (level=5, msg=<value optimized out>) at
        m = {<wxStringBase> = {static npos = 18446744073709551615, m_pchData =
0x1ba57e8}, <No data fields>}
#4  0x00002aaab5a6616a in _wrap_LogGeneric (args=<value optimized out>,
kwargs=<value optimized out>)
    at src/gtk/_misc_wrap.cpp:13944
        __tstate = (PyThreadState *) 0x6012d0
        resultobj = <value optimized out>
        arg2 = (wxString *) 0x1ab2960
        obj0 = (PyObject *) 0x609508
        obj1 = (PyObject *) 0x136e360
        kwnames = {0x2aaab5aa223b "level", 0x2aaab5aa2241 "msg", 0x0}
#5  0x0000003e1f636140 in PyObject_Call () from /usr/lib64/libpython2.4.so.1.0
No symbol table info available.

(this was an FC6 x86_64 box updated with wx 2.8 built from the Rawhide wxGTK and
wxPython SRPMs).

I'm not sure whether this is a bittorrent issue or a wxwidgets issue; I'll try
asking on the bittorrent bug reporting address to see what upstream thinks.
Comment 2 Paul Howarth 2007-01-23 12:28:15 EST
*** Bug 223636 has been marked as a duplicate of this bug. ***
Comment 3 Paul Howarth 2007-01-25 07:18:10 EST
Status update:

I've exchanged several emails with Greg Hazel, who is one of the upstream
BitTorrent maintainers. Greg confirmed that he'd experienced a similar problem
with wxPython 2.7 a while back, but that the BitTorrent maintainers are sticking
with wxPython 2.6 at least for the time being because 2.7/2.8 are significantly
bigger (at least on Windows, and BitTorrent is developed primarily on Windows).

We then tried finding a workaround for the problem but this ended up as a game
of whack-a-mole with segfaults.

First up, the "LogProxy" function was taken out of the loop by changing:
in BitTorrent/GUI_wx/DownloadManager.py, around line 3000.

This then moved the problem to a segfault in the console subwindow, which Greg
thought looked like a wxPython bug in wx.py.shell. He suggested turning off the
console window as a workaround for that, by changing:
console = True
console = False
at around line 87 of BitTorrent/GUI_wx/DownloadManager.py.

The result of this was another segfault in the logging subsystem, so Greg
suggested bypassing it by adding a "return" at the top of the do_log function
that line 3650 of BitTorrent/GUI_wx/DownloadManager.py is in.

The result of this was another segfault that implied to Greg that the whole
event system was broken.

So it looks like we need to get someone familiar with wxPython to take a look at
it now.
Comment 4 dex 2007-01-25 13:06:39 EST
Yes a had the same game last nite (fun isn't it) also down roughly the same code
paths and ended in one big segfault, sadly I don't know any Python or wx so I
wait for an expert opinion. azureus is busted too isn't rawhide so much Fun.
Comment 5 Paul Howarth 2007-01-26 11:17:55 EST
I've just made a change to the bittorrent package in rawhide (it'll probably hit
the mirrors tomorrow), but don't all get excited; it fixes a couple of minor
nits and should allow the GUI to get as far as the wx segfault. This will help
with debugging when I try raising this with the wxPython maintainer.

However, another avenue that is worth exploring now is whether the GUI will work
on a system that has wxPython 2.6 installed in addition to or instead of the
wxPython 2.8 from Extras. If no resolution to the wxPython 2.8 segfault issue
can be found, it might be possible to create a compat-wxPython2.6 package to run
the bittorrent GUI with.
Comment 6 Paul Howarth 2007-01-30 09:10:19 EST
Regarding Comment #5 where I referred to a compat-wxPython26 package, I've now
put one together and it does indeed seem to solve the problem, which does
suggest that the issue lies in the rawhide wxPython 2.8 package or the
underlaying wxGTK package, which is supposed to be 2.6-compatible.

I've also built wx 2.8 packages and the compat-2.6 packages for FC6, which
exhibits exactly the same behaviour when upgraded to 2.8.

Anyone wishing to try these can grab them from here:
Comment 7 Sander Hoentjen 2007-02-03 07:57:52 EST
tried the compat packages:
First it gave me a bug:
$ bittorrent
>>> unable to setrlimit  not allowed to raise maximum limit
Exception in thread bittorrent:263 in <module>:
threading.Thread(target=init_core, args=(mainloop,)).start():
Traceback (most recent call last):
  File "/usr/bin/bittorrent", line 263, in <module>
    threading.Thread(target=init_core, args=(mainloop,)).start()
  File "/usr/bin/bittorrent", line 215, in init_core
  File "/usr/lib/python2.5/site-packages/BitTorrent/MultiTorrent.py", line 167,
in __init__
  File "/usr/lib/python2.5/site-packages/BitTorrent/MultiTorrent.py", line 844,
in _restore_state
    t = decode_line(line)
  File "/usr/lib/python2.5/site-packages/BitTorrent/MultiTorrent.py", line 758,
in decode_line
    t.working_path = t.working_path.decode('utf-8')
  File "/usr/lib/python2.5/site-packages/BitTorrent/Torrent.py", line 268, in
    self.config['working_path'] = value
  File "/usr/lib/python2.5/site-packages/BitTorrent/prefs.py", line 50, in
    isinstance(value, str), "'%s' is not str" % option
AssertionError: 'working_path' is not str
non-daemon threads not shutting down in a timely fashion:
  <StackThread(disk_thread-1, started)>
  <StackThread(disk_thread-2, started)>
  <StackThread(disk_thread-3, started)>
You have no chance to survive make your time.

but after moving the old ~/.bittorrent dir out of the way things seem to be working
Comment 8 Darwin H. Webb 2007-02-04 17:53:26 EST
I find the rpm @ http://mirror.city-fan.org/wx-repo/ unseable as to determine
which rpm's to use in an rpm --uvh blah.rpm --oldpackage senario.

I would need to yum update bittorrent bitterrent-gui first
then --oldpackage for the 3 wx RPM's (but you have 5 and which are needed is

Then, if I were to try all the possible combinations, I have no .bittorent file
as ~/.bittorrent (why I don't know.) I got the same messages that Sander got
when I first installed it.)

Also, now that you have found a solution what is going to happen? (wait,
re-compile your pakages and bt 5.0.5 for extras, other?)

Could you at least put an install txt file on your repo site?



Comment 9 Darwin H. Webb 2007-02-04 19:11:51 EST
OK, I tried the NON-DEVEL packages as rpm -uvh --olpackage after yum install
bittorrent bittorrent-gui and it --test ED ok and when in.

But I got the screen up on fist try with a message that said
bittorent core failed to initialize. It hung for a few seconds and then disappeared.

I tried to run IN a term but it would not start.
I clciked on the program and it gave the same messages as Sander shows but the
term exits.

I then tried the DEVL RPM's as 
rpm -Uvh --oldpackage --test
and got
 rpm -Uvh compat-wxGTK26-devel-2.6.3-
compat-wxPython26-devel- --oldpackage --test
warning: compat-wxGTK26-devel-2.6.3- Header V3 DSA
signature: NOKEY, key ID b56a8bac
error: Failed dependencies:
        gtk2-devel is needed by compat-wxGTK26-devel-2.6.3-
        libGL-devel is needed by compat-wxGTK26-devel-2.6.3-
        libGLU-devel is needed by compat-wxGTK26-devel-2.6.3-
        wxGTK-devel is needed by compat-wxGTK26-devel-2.6.3-
        wxGTK-devel is needed by compat-wxPython26-devel-

Now I see that DEVL has 3 different contexts here.

Your devl package
the devl (rawhaide) system
and the devl environment and that is beyound me as needing 5 dev packages
installed with the rpm is probably looking at deps-hell by next week so I'll
pass on that.

Still .bittorretn file.

Comment 10 Darwin H. Webb 2007-02-04 19:14:55 EST
That should say
"still no .bittorrent file"  (to delete and try as Sander did.

Comment 11 Darwin H. Webb 2007-02-04 19:48:31 EST
One more for the road.

I got the idea that I had BOTH the normal and compat rpms installed and that
didn't set right so I tried to re-do the whole whole thing.

I did get the gui up and it sat there untill I clicked on file.
Then I thot I needed to remove the wxPython (2.8) also and I did.

But when I re-installed the 3 compat's rpm's the one compat wanted the orginal
wxPython (2.8) package.

That is beyound me. does seem like a replacement but rather an addition package?


rpm -qa wx*
[root@Jovette-14 ~]# prm -qa compat-wx*
-bash: prm: command not found
[root@Jovette-14 ~]# rpm -qa compat-wx*
[root@Jovette-14 ~]# rpm -e wxGTK-2.8.0-
wxGTK-gl-2.8.0- --nodeps
[root@Jovette-14 ~]# rpm -e wxPython- --nodeps
[root@Jovette-14 ~]# rpm -e compat-wxGTK26-gl-2.6.3-
compat-wxGTK26-2.6.3- compat-wxPython26- --nodeps
[root@Jovette-14 ~]# cd /home/darwinhwebb/deck
[root@Jovette-14 deck]# rpm -ivh compat-wxGTK26-gl-2.6.3-
compat-wxGTK26-2.6.3- compat-wxPython26- --test
error: open of compat-wxGTK26-gl-2.6.3- failed: No such file or
error: open of compat-wxGTK26-2.6.3- failed: No such file or directory
error: open of compat-wxPython26- failed: No such file or directory
[root@Jovette-14 deck]# dir
bittorrent-4.4.0-3.fc7.noarch.rpm                  f7-test1-dvd-i386.torrent
bittorrent-gui-4.4.0-3.fc7.noarch.rpm              fx3-execmem-chcon.txt
bittorrent-gui-5.0.5-2.fc7.noarch.rpm              kernel-2.6.19-1.2917.fc7.i686.rpm
compat-wxGTK26-2.6.3-        kernel-2.6.19-1.2919.fc7.i686.rpm
compat-wxPython26-           pungi-0.2.1-1.fc7.noarch.rpm
compat-wxPython26-devel-     sysklogd-1.4.1-45.fc7.i386.rpm
[root@Jovette-14 deck]# rpm -ivh compat-wxPython26-
compat-wxGTK26-gl-2.6.3- --test
warning: compat-wxPython26- Header V3 DSA signature:
NOKEY, key ID b56a8bac
error: Failed dependencies:
        wxPython is needed by compat-wxPython26-
[root@Jovette-14 deck]# rpm -qa wxPython
[root@Jovette-14 deck]# 
Comment 12 Darwin H. Webb 2007-02-04 20:42:23 EST
It actually started to work but I realized I was in root.
At file quit I got these messages if they help.
Going to exit out of root and try again.

# bittorrent

** (python:3866): CRITICAL **: clearlooks_style_draw_focus: assertion `height >=
-1' failed

(python:3866): Gtk-CRITICAL **: gtk_container_remove: assertion `GTK_IS_TOOLBAR
(container) || widget->parent == GTK_WIDGET (container)' failed

(python:3866): Gtk-CRITICAL **: gtk_container_remove: assertion `GTK_IS_TOOLBAR
(container) || widget->parent == GTK_WIDGET (container)' failed
Unhandled exception in thread started by <bound method Reaper.__bootstrap of
<Reaper(Thread-2, stopped daemon)>>
Error in sys.excepthook:
TypeError: 'NoneType' object is not callable

Original exception was:
Traceback (most recent call last):
  File "/usr/lib/python2.5/threading.py", line 482, in __bootstrap
    " (most likely raised during interpreter shutdown):")
  File "/usr/lib/python2.5/codecs.py", line 304, in write
  File "/usr/lib/python2.5/site-packages/BitTorrent/__init__.py", line 140, in write
    StringIO.write(self, lines[-1])
AttributeError: 'NoneType' object has no attribute 'write'


Well, I guess not.

[darwinhwebb@Jovette-14 /]$ bittorrent
>>> unable to setrlimit  not allowed to raise maximum limit
GTK Accessibility Module initialized
Exception in thread bittorrent:263 in <module>:
threading.Thread(target=init_core, args=(mainloop,)).start():
Traceback (most recent call last):
  File "/usr/bin/bittorrent", line 263, in <module>
    threading.Thread(target=init_core, args=(mainloop,)).start()
  File "/usr/bin/bittorrent", line 215, in init_core
  File "/usr/lib/python2.5/site-packages/BitTorrent/MultiTorrent.py", line 167,
in __init__
  File "/usr/lib/python2.5/site-packages/BitTorrent/MultiTorrent.py", line 823,
in _restore_state
    t = decode_line(line)
  File "/usr/lib/python2.5/site-packages/BitTorrent/MultiTorrent.py", line 758,
in decode_line
    t.working_path = t.working_path.decode('utf-8')
  File "/usr/lib/python2.5/site-packages/BitTorrent/Torrent.py", line 268, in
    self.config['working_path'] = value
  File "/usr/lib/python2.5/site-packages/BitTorrent/prefs.py", line 50, in
    isinstance(value, str), "'%s' is not str" % option
AssertionError: 'working_path' is not str
non-daemon threads not shutting down in a timely fashion:
  <StackThread(disk_thread-1, started)>
  <StackThread(disk_thread-2, started)>
  <StackThread(disk_thread-3, started)>
You have no chance to survive make your time.
[darwinhwebb@Jovette-14 /]$ 
Comment 13 Paul Howarth 2007-02-05 03:21:24 EST
The compat-* packages are intended to be installed alongside the main wx*
packages; you shouldn't need any fancy rpm options such as --oldpackage to get
them installed. Some of the compat-* packages have dependencies on the main wx*
packages because there are some files required by the compat-* packages that
would have the same names as the files in the main wx* packages and hence would
cause conflicts if both packages included them. So the alternative way is to not
include those files in the compat-* packages and require the main packages instead.

The ideal way to progress this bug forward would be for the underlying problem
(which looks likely to be in wxGTK - see Bug #225043) to be fixed. However, if
that doesn't happen, it seems that a workaround of providing compat-wx* packages
will probably work.

I will need to add a README.Fedora to the bittorrent package to tell people to
remove their ~/.bittorrent file/directory if upgrading from an older version
than 4.20.0. If we eventually go with the compat-* package workaround, I will
add appropriate dependencies to the bittorrent package so that the correct
packages (compat-wxPython26, compat-wxGTK26, and compat-wxGTK26-gl) get pulled in.

Not sure about the crash on exit; I'm not seeing that here. It looks very much
like the problem with an old ~/.bittorrent directory though that Sander reported
in Comment #7. Are you sure you don't have one?

ls -ld ~/.bit*
Comment 14 Darwin H. Webb 2007-02-06 16:40:17 EST
Hi Paul, 

I tried again with my regular username. I deleted the .bittorrent file.
The progam started and initialized.

I clicked on everything and it didn't crash but here are some things I found.

1. The Info (default tab) somethimes disappeared while a torrent was running.
2. The peers list - schroll bar is jittery and changes size and shape (unusable
at times).
3. The message area at the bottopm right is too short. Hides critical parts of
4. FAQ - does not work, does not exist or starts a web page.
5. I was able to start the program only after suppling several parms for DIR's
and max upload.
Even after this the Bittorrent Downloads folder was created on the Desktop.
The program should not create any DIR paths until after opening and it should
popup a first time settings for this stuff.
I now have PATHS in may places.

So to Compat or not to Compat.
I think it need more work so if the wx coders can't commit to fixes within 10-12
days I would pull 5.0.5 out of extras and put 4.4.x back in so that the FC7T2
will have a working BT. The coders can come back with a better version and then
you or packager can mess with it in post FC7T2 - T3 time. And in FC6-test.

Thats MO.

thanks for the the effort,

Comment 15 Paul Howarth 2007-02-21 15:41:21 EST
*** Bug 229507 has been marked as a duplicate of this bug. ***
Comment 16 Paul Howarth 2007-02-23 10:24:22 EST
Given that there is no sign of a fix for this coming any time soon (5.0.6 has
some changes in logging but it still segfaults), I propose to revert development
to 4.4.x until such time as the GUI works with the version of wx in development.

A compat-WXGTK26 package has just appeared in Extras but the wxPython maintainer
has doubts about the merits of a compat-wxPython26 package (see
so I don't think the compat- route is the way to go.

I'm also inclined not to use a epoch bump for the downgrade. Whilst this means
that current rawhide users of bittorrent will need to downgrade manually, it
does at least save us from needing an epoch in the package for the rest of eternity.

Any other suggestions? If not, I'll try to get the downgrade done early next week.
Comment 17 dex 2007-02-26 10:23:07 EST
Yep! revert rawhide back to 4.4.x please ... shame the new gui looked great
before it segfaulted. 
Comment 18 Paul Howarth 2007-03-01 03:49:40 EST
bittorrent-4.4.0-4.fc7 is now on download.fedora.redhat.com and should be on the
mirrors within a day. Remember that a manual downgrade will be needed as there
has been no epoch used.
Comment 19 Jason Tibbitts 2007-05-06 00:33:47 EDT
I wonder if the problem is any better now that 225043 is fixed.
Comment 20 dex 2007-05-06 02:12:58 EDT
err nope same problems here with: 

Comment 21 Bug Zapper 2008-04-03 14:55:03 EDT
Based on the date this bug was created, it appears to have been reported
against rawhide during the development of a Fedora release that is no
longer maintained. In order to refocus our efforts as a project we are
flagging all of the open bugs for releases which are no longer
maintained. If this bug remains in NEEDINFO thirty (30) days from now,
we will automatically close it.

If you can reproduce this bug in a maintained Fedora version (7, 8, or
rawhide), please change this bug to the respective version and change
the status to ASSIGNED. (If you're unable to change the bug's version
or status, add a comment to the bug and someone will change it for you.)

Thanks for your help, and we apologize again that we haven't handled
these issues to this point.

The process we're following is outlined here:

We will be following the process here:
http://fedoraproject.org/wiki/BugZappers/HouseKeeping to ensure this
doesn't happen again.
Comment 22 Paul Howarth 2008-04-09 05:08:50 EDT
Given that upstream has gone closed source with version 6.x and nobody appears
to be maintaining a fork of a 5.x open source version, I think there's little
chance of this ever getting fixed, and so Fedora is going to be stuck with 4.4.0

I'm going to close this bug CANTFIX; if anyone wants to do the work of fixing
this (effectively starting a fork of 5.x), I'll happily reopen this.

Note You need to log in before you can comment on or make changes to this bug.