bugMyPaint - Bugs: bug #20740, [gentoo] spurious...

Show feedback again

You are not allowed to post comments on this tracker with your current authentification level.

bug #20740: [gentoo] spurious "TypeError" on scons install ("'NoneType' object is not callable" printed in Popen's __del__())

Submitted by:  Cedric sodhi <manday>
Submitted on:  Mon Apr 15 19:28:54 2013  
Severity: 2 - MinorPriority: 3 - Low
Status: FixedPrivacy: Public
Assigned to: Andrew Chadwick <achadwick>Open/Closed: Closed
Release: 76bbb77e6f46cf542c48b1238e5003a62f245267Planned Release: None
Operating System: Gentoo, x64 no multilib

(Jump to the original submission Jump to the original submission)

Mon Jun 23 21:53:00 2014, comment #14:

[This is a canned response, please forgive the broken formatting: it's one of the many things Gna! unfortunately does not do well.]

This bug tracker will shortly be moving to Github. As part of this process, we are reviewing old bug reports on gna.org.

This bug was marked as Fixed long ago, but was still classified as Open. Github does not distinguish between Fixed+Open and Fixed+Closed in the
way we once did here, so this bug is now being marked Closed, and will not be migrated into the github issues tracker.

If you believe that this bug still affects the most recent git master of MyPaint (and thus the next release), please feel free to open a new
issue on Github about it. Our new issue trackers are:


Andrew Chadwick <achadwick>
Project AdministratorIn charge of this item.
Sat Apr 12 17:30:33 2014, comment #13:

Works in commit 32d806638831459bc4f3e9bc30d53b64430b61ee !

Cedric sodhi <manday>
Tue Mar 11 14:10:10 2014, comment #12:

check_ouztput is in 2.7.6, the latest stable on Gentoo is 2.7.5. All I meant to tell you is that I'll only report my findings when 2.7.6 hits stable (or, if that takes too long, earlier). I did not mean to imply anything besides that.

Cedric sodhi <manday>
Tue Mar 11 12:40:06 2014, comment #11:

subprocess.check_output() has been in there since Python 2.7, and I know that Gentoo has support for that version. Ubuntu 12.04 (current LTS) and Debian Wheezy (current stable) both use 2.7, which was released in July 2010, and I'm considering the other libs from that era to be somewhat too old to support fully now (there are quite a few Gtk UI rendering bugs, for example)

I don't really see any reason not to use this function, or any reason not to explicitly require Python 2.7 for MyPaint. After all, we'll have to migrate to 3.0 fairly soon, and ridding the codebase of as much legacy crap as possible would be a good idea.

Andrew Chadwick <achadwick>
Project AdministratorIn charge of this item.
Mon Mar 10 16:51:27 2014, comment #10:

I'll try a.s.a.p. Ironically, check_output is too bleeding-edge for any of Gentoo's stable Pythons, so hang in a while.

Cedric sodhi <manday>
Mon Mar 10 00:10:33 2014, comment #9:

Hi - could you try https://gitorious.org/mypaint/mypaint/commit/77749db676222c44f089e1c2050a2055a9c742ad please and let us know if it fixes this issue?

Andrew Chadwick <achadwick>
Project AdministratorIn charge of this item.
Thu Oct 3 11:03:54 2013, comment #8:

salamanderrake: this backtrace is unrelated to the topic of this bug; please follow up the GUI bug at bug #21145 (and sorry for the confusion)

Marking this build-time bug as confirmed though, and flagging as gentoo-specific.

Also marking as minor unless Gentoo users confirm that it's breaking full system rebuilds. From our perspective, MyPaint builds and installs on the affected systems despite the spurious error message, and if I understand it right exceptions printed but squelched in "__del__" routines run at Python shutdown do not affect the interpreter's exit code. See the note at http://docs.python.org/2/reference/datamodel.html#object.__del__

Andrew Chadwick <achadwick>
Project AdministratorIn charge of this item.
Tue Oct 1 19:23:30 2013, comment #7:

Here is another crash report, and yes I too am on gentoo.

Traceback (most recent call last):
File "/home/salamanderrake/src/mypaint/git/gui/pixbuflist.py", line 300, button_press_cb(self=<_BrushList object at 0x1fbf960 (gui+dialogs+_BrushList at 0x25cde30)>, widget=<_BrushList object at 0x1fbf960 (gui+dialogs+_BrushList at 0x25cde30)>, event=<void>)
if self.selected is not None:
variables: {'item': ('local', <ManagedBrush u'deevad/blending' p=None>), 'self.on_select': ('local', <bound method _BrushList.on_select of <_BrushList object at 0x1fbf960 (gui+dialogs+_BrushList at 0x25cde30)>>)}
File "/home/salamanderrake/src/mypaint/git/gui/dialogs.py", line 295, on_select(self=<_BrushList object at 0x1fbf960 (gui+dialogs+_BrushList at 0x25cde30)>, brush=<ManagedBrush u'deevad/blending' p=None>)
def on_select(self, brush):
variables: {'self.chooser.on_select': ('local', <bound method BrushDropdownToolItem.on_quick_change_select of <BrushDropdownToolItem object at 0x1fbceb0 (MyPaintBrushDropdownToolItem at 0x2a345a0)>>), 'brush': ('local', <ManagedBrush u'deevad/blending' p=None>)}
File "/home/salamanderrake/src/mypaint/git/gui/toolbar.py", line 439, on_quick_change_select(self=<BrushDropdownToolItem object at 0x1fbceb0 (MyPaintBrushDropdownToolItem at 0x2a345a0)>, brush=<ManagedBrush u'deevad/blending' p=None>)
variables: {'self.app.brushmanager.select_brush': ('local', <bound method BrushManager.select_brush of <gui.brushmanager.BrushManager object at 0xa67910>>), 'brush': ('local', <ManagedBrush u'deevad/blending' p=None>)}
File "/home/salamanderrake/src/mypaint/git/gui/brushmanager.py", line 678, select_brush(self=<gui.brushmanager.BrushManager object>, brush=<ManagedBrush u'deevad/blending' p=None>)
# brush, amongst other things
self.brush_selected(brush, brushinfo)
variables: {'self.brush_selected': ('local', <lib.observable._MethodWithObservers object at 0xa85fd0>), 'brush': ('local', <ManagedBrush u'deevad/blending' p=None>), 'brushinfo': ('local', <lib.brush.BrushInfo instance at 0xa7dcb0>)}
File "/home/salamanderrake/src/mypaint/git/lib/observable.py", line 175, _call_(self=<lib.observable._MethodWithObservers object>, args=(<ManagedBrush u'deevad/blending' p=None>, <lib.brush.BrushInfo instance>), *kwargs={})
observer(observed, args, *kwargs)
except _BoundObserverMethod._ReferenceError, ex:
variables: {'observed': ('local', <gui.brushmanager.BrushManager object at 0xa67910>), 'args': ('local', (<ManagedBrush u'deevad/blending' p=None>, <lib.brush.BrushInfo instance at 0xa7dcb0>)), 'observer': ('local', 'brush_selected_cb' of <gui.brushmodifier.BrushModifier instance at 0x1db9ea8>), 'kwargs': ('local', {})}
File "/home/salamanderrake/src/mypaint/git/lib/observable.py", line 288, _call_(self='brush_selected_cb' of <gui.brushmodifier.BrushModifier instance>, observed=<gui.brushmanager.BrushManager object>, args=(<ManagedBrush u'deevad/blending' p=None>, <lib.brush.BrushInfo instance>), *kwargs={})
raise self._ReferenceError
self._observer_method(observer, observed, args, *kwargs)
del observer
variables: {'observed': ('local', <gui.brushmanager.BrushManager object at 0xa67910>), 'self._observer_method': ('local', <function brush_selected_cb at 0x20bdb18>), 'args': ('local', (<ManagedBrush u'deevad/blending' p=None>, <lib.brush.BrushInfo instance at 0xa7dcb0>)), 'observer': ('local', <gui.brushmodifier.BrushModifier instance at 0x1db9ea8>), 'kwargs': ('local', {})}
File "/home/salamanderrake/src/mypaint/git/gui/brushmodifier.py", line 280, brush_selected_cb(self=<gui.brushmodifier.BrushModifier instance>, bm=<gui.brushmanager.BrushManager object>, managed_brush=<ManagedBrush u'deevad/blending' p=None>, brushinfo=<lib.brush.BrushInfo instance>)
b.set_string_property("parent_brush_name", managed_brush.name)
variables: {'color': ('local', None), 'b.set_color_hsv': ('local', <bound method BrushInfo.set_color_hsv of <lib.brush.BrushInfo instance at 0xa0d200>>)}
File "/home/salamanderrake/src/mypaint/git/lib/brush.py", line 414, set_color_hsv(self=<lib.brush.BrushInfo instance>, hsv=None)
h, s, v = hsv
self.set_base_value('color_h', h)
variables: {'h': (None, []), 's': ('global', <brushlib.brushsettings.BrushSetting instance at 0x1d45c68>), 'hsv': ('local', None), 'v': (None, [])}
TypeError: 'NoneType' object is not iterable


Salamander Rake <salamanderrake>
Tue Sep 17 11:53:34 2013, comment #6:

[Cc:ed salamanderrake, duplicate reported: bug #21145]

This seems to be a spurious error encountered at compile time during destruction of an internal pipe object used for interrogating git to obtain a revision for the about dialog. Not especially important, but it would be nice if someone could tell me what shell return code is given by scons and scons install (separately please)

I don't run Gentoo myself, so if anyone wants to get creative with a patch, please do. Could someone with an affected system try subprocess.check_output() as an alternative to fiddling with os.popen2 please? It may be better behaved.

The "scons: done building targets." indicates that everything was built successfully and that scons is due to exit. The exception is being ignored because it happens in _del_(). Looks like normal Python gc at the end of successful execution going wrong to me, which may mean you have a strange configuration of scons or Python.

Andrew Chadwick <achadwick>
Project AdministratorIn charge of this item.
Wed May 15 18:40:53 2013, comment #5:

I have to correct that statement, in fact it actually installs if I run scons install afterwards, but the error is then repeated.

Cedric sodhi <manday>
Wed May 15 18:39:00 2013, comment #4:

I don't know what further information you want me to provide, Andrew. This is still happening and prevents me from building mypaint

Cedric sodhi <manday>
Sun Apr 28 08:45:06 2013, comment #3:

Very little to go on here? Git binary installed? These are fairly strange questions, given that I've already told you that I bisected the problem to said commit...

Apologies, I missed your comment of the 22th. As of 9571de8b3ff1ff85897fc5ef48a9b38326d49e26 this is still happening.

Using Python 2.7


Operating System is Gentoo, x64 no multilib

The error is obtained after

$ git pull ; git reset -xfd ; scons install prefix=/home/manday/local

stdout and stderr are attached.

Your little python script outputs "foo\nDONE".

(file #17838, file #17839)

Cedric sodhi <manday>
Sat Apr 27 22:24:20 2013, comment #2:

Is this still happening? Please update.

Andrew Chadwick <achadwick>
Project AdministratorIn charge of this item.
Mon Apr 22 01:36:51 2013, comment #1:

There's very little to go on here. Sorry, please bear with me...

So this happens after the build during final garbage collection? That's not a normal build failure, then.

Please look at the top of the generated ./mypaint after this presumably successful build, and tell me what _MYPAINT_BUILD_GIT_REVISION was set to. Empty string or a seven-hex-digit revision ID?

Please report which OS you are running in the Operating System: field on the Gna! bug page, https://gna.org/bugs/index.php?20740

Please explain precisely the steps you took to obtain this error.

Please confirm that the "git" binary is installed and accessible via your search path.

Please confirm that os.popen2() works normally on your system, and that any objects it creates are garbage-collected correctly, by running:

from a real ".py" script, using the Python 2.7 interpreter on your system.

Please confirm that you are running Python 2.7.

Andrew Chadwick <achadwick>
Project AdministratorIn charge of this item.
Mon Apr 15 19:28:54 2013, original submission:

scons: done building targets.
Exception TypeError: TypeError("'NoneType' object is not callable",) in <bound method Popen.__del__ of <subprocess.Popen object at 0x31d6b50>> ignored

bisected to 76bbb77e6f46cf542c48b1238e5003a62f245267

Cedric sodhi <manday>


Attached Files
file #17838:  build-stderr.log added by manday (1kB - application/octet-stream)
file #17839:  build-stdout.log added by manday (194kB - application/octet-stream)


Depends on the following items: None found

Items that depend on this one: None found


Carbon-Copy List
  • -unavailable- added by salamanderrake (Posted a comment)
  • -unavailable- added by achadwick
  • -unavailable- added by achadwick (Posted a comment)
  • -unavailable- added by manday (Submitted the item)

    Do you think this task is very important?
    If so, you can click here to add your encouragement to it.
    This task has 0 encouragements so far.

    Only logged-in users can vote.


    Error: not logged in



    Follow 16 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Mon Jun 23 21:53:00 2014achadwickOpen/ClosedOpen=>Closed
    Mon Apr 14 18:19:16 2014achadwickStatusReady For Test=>Fixed
    Tue Mar 11 12:40:06 2014achadwickPriority4=>3 - Low
    Mon Mar 10 00:10:33 2014achadwickStatusConfirmed=>Ready For Test
    Thu Oct 3 11:03:54 2013achadwickSeverity3 - Normal=>2 - Minor
      StatusNeed Info=>Confirmed
      Summary[gentoo?] TypeError on scons install=>[gentoo] spurious "TypeError" on scons install ("'NoneType' object is not callable" printed in Popen's _del_())
    Tue Sep 17 11:53:34 2013achadwickPriority5 - Normal=>4
      Operating System=>Gentoo, x64 no multilib
      SummaryTypeError on scons install=>[gentoo?] TypeError on scons install
      Carbon-Copy-=>Added salamanderrake
    Sun Apr 28 08:45:06 2013mandayAttached File-=>Added build-stderr.log, #17838
      Attached File-=>Added build-stdout.log, #17839
    Mon Apr 22 01:36:51 2013achadwickStatusNone=>Need Info
      Assigned toNone=>achadwick
    Show feedback again

    Back to the top

    Powered by Savane 3.1-cleanup