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 15 Apr 2013 07:28:54 PM UTC  
 
Severity: 2 - MinorPriority: 3 - Low
Status: FixedPrivacy: Public
Assigned to: Andrew Chadwick <achadwick>Open/Closed: Open
Release: 76bbb77e6f46cf542c48b1238e5003a62f245267Planned Release: None
Operating System: Gentoo, x64 no multilib

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

Sat 12 Apr 2014 05:30:33 PM UTC, comment #13:

Works in commit 32d806638831459bc4f3e9bc30d53b64430b61ee !

Cedric sodhi <manday>
Tue 11 Mar 2014 02:10:10 PM UTC, 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 11 Mar 2014 12:40:06 PM UTC, 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 10 Mar 2014 04:51:27 PM UTC, 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 10 Mar 2014 12:10:33 AM UTC, 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 03 Oct 2013 11:03:54 AM UTC, 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 01 Oct 2013 07:23:30 PM UTC, comment #7:

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

[code]
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>)
self.set_selected(item)
self.on_select(item)
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):
self.chooser.on_select(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>)
self.dropdown_button.panel_hide(immediate=False)
self.app.brushmanager.select_brush(brush)
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={})
try:
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_color_hsv(color)
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)
try:
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

[/code]

Salamander Rake <salamanderrake>
Tue 17 Sep 2013 11:53:34 AM UTC, 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 15 May 2013 06:40:53 PM UTC, 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 15 May 2013 06:39:00 PM UTC, 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 28 Apr 2013 08:45:06 AM UTC, 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

_MYPAINT_BUILD_GIT_REVISION = '9571de8'

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 27 Apr 2013 10:24:20 PM UTC, comment #2:

Is this still happening? Please update.

Andrew Chadwick <achadwick>
Project AdministratorIn charge of this item.
Mon 22 Apr 2013 01:36:51 AM UTC, 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 15 Apr 2013 07:28:54 PM UTC, 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.

     

    Please enter the title of George Orwell's famous dystopian book (it's a date):

     

     

    Follow 15 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Mon 14 Apr 2014 06:19:16 PM UTCachadwickStatusReady For Test=>Fixed
    Tue 11 Mar 2014 12:40:06 PM UTCachadwickPriority4=>3 - Low
    Mon 10 Mar 2014 12:10:33 AM UTCachadwickStatusConfirmed=>Ready For Test
    Thu 03 Oct 2013 11:03:54 AM UTCachadwickSeverity3 - 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 17 Sep 2013 11:53:34 AM UTCachadwickPriority5 - Normal=>4
      Operating System=>Gentoo, x64 no multilib
      SummaryTypeError on scons install=>[gentoo?] TypeError on scons install
      Carbon-Copy-=>Added salamanderrake
    Sun 28 Apr 2013 08:45:06 AM UTCmandayAttached File-=>Added build-stderr.log, #17838
      Attached File-=>Added build-stdout.log, #17839
    Mon 22 Apr 2013 01:36:51 AM UTCachadwickStatusNone=>Need Info
      Assigned toNone=>achadwick
      Release=>76bbb77e6f46cf542c48b1238e5003a62f245267
    Show feedback again

    Back to the top


    Powered by Savane 3.1-cleanup