2017-09-15 16 views
0

Python2.7 및 wxpython-3.0-gtk2로 작성된 TaskCoach-1.4.3을 사용합니다. 원본에 코드를 변경하지 않았고 2 년 이상 사용했지만 어느 날 이상한 오류로 작업을 중단했습니다.wxpython, wx-3.0-gtk2에 이상한 문제가 있습니다. C++ 어설 션 "IsOk()"실패

Gtk-Message: (for origin information, set GTK_DEBUG): failed to retrieve property `gtk-primary-button-warps-slider' of type `gboolean' from rc file value "((GString*) 0x5d546b17a0)" of type `gboolean' 
Traceback (most recent call last): 
    File "/home/user/bin/taskcoach/taskcoachlib/gui/artprovider.py", line 62, in CreateBitmap 
    return self._CreateBitmap(artId, artClient, size) 
    File "/home/user/bin/taskcoach/taskcoachlib/gui/artprovider.py", line 69, in _CreateBitmap 
    bitmap = icons.catalog[catalogKey].getBitmap() 
    File "/usr/lib64/python2.7/site-packages/wx-3.0-gtk2/wx/lib/embeddedimage.py", line 48, in GetBitmap 
    return wx.BitmapFromImage(self.GetImage()) 
    File "/usr/lib64/python2.7/site-packages/wx-3.0-gtk2/wx/_gdi.py", line 884, in BitmapFromImage 
    val = _gdi_.new_BitmapFromImage(*args, **kwargs) 
wx._core.PyAssertionError: C++ assertion "image.IsOk()" failed at /var/tmp/portage/x11-libs/wxGTK-3.0.2.0-r2/work/wxPython-src-3.0.2.0/src/gtk/bitmap.cpp(626) in wxBitmap(): invalid image 
persons_icon 
Traceback (most recent call last): 
    File "/home/user/bin/tasker", line 72, in <module> 
    start() 
    File "/home/user/bin/tasker", line 63, in start 
    app = application.Application(options, args) 
    File "/home/user/bin/taskcoach/taskcoachlib/patterns/singleton.py", line 29, in __call__ 
    class_.instance = super(Singleton, class_).__call__(*args, **kwargs) 
    File "/home/user/bin/taskcoach/taskcoachlib/application/application.py", line 117, in __init__ 
    self.init(**kwargs) 
    File "/home/user/bin/taskcoach/taskcoachlib/application/application.py", line 226, in init 
    self.settings, splash=splash) 
    File "/home/user/bin/taskcoach/taskcoachlib/gui/mainwindow.py", line 68, in __init__ 
    self._create_window_components() # Not private for test purposes 
    File "/home/user/bin/taskcoach/taskcoachlib/gui/mainwindow.py", line 140, in _create_window_components 
    viewer.addViewers(self.viewer, self.taskFile, self.settings) 
    File "/home/user/bin/taskcoach/taskcoachlib/gui/viewer/factory.py", line 45, in __init__ 
    self.__add_all_viewers() 
    File "/home/user/bin/taskcoach/taskcoachlib/gui/viewer/factory.py", line 49, in __add_all_viewers 
    self.__add_viewers(task.TaskViewer) 
    File "/home/user/bin/taskcoach/taskcoachlib/gui/viewer/factory.py", line 66, in __add_viewers 
    **self._viewer_kwargs(viewer_class)) 
    File "/home/user/bin/taskcoach/taskcoachlib/patterns/metaclass.py", line 39, in __call__ 
    instance = super(NumberedInstances, cls).__call__(*args, **kwargs) 
    File "/home/user/bin/taskcoach/taskcoachlib/gui/viewer/task.py", line 877, in __init__ 
    super(TaskViewer, self).__init__(*args, **kwargs) 
    File "/home/user/bin/taskcoach/taskcoachlib/gui/viewer/mixin.py", line 383, in __init__ 
    super(SortableViewerForTasksMixin, self).__init__(*args, **kwargs) 
    File "/home/user/bin/taskcoach/taskcoachlib/gui/viewer/mixin.py", line 323, in __init__ 
    super(ManualOrderingMixin, self).__init__(*args, **kwargs) 
    File "/home/user/bin/taskcoach/taskcoachlib/gui/viewer/mixin.py", line 208, in __init__ 
    super(SortableViewerMixin, self).__init__(*args, **kwargs) 
    File "/home/user/bin/taskcoach/taskcoachlib/gui/viewer/base.py", line 703, in __init__ 
    super(ViewerWithColumns, self).__init__(*args, **kwargs) 
    File "/home/user/bin/taskcoach/taskcoachlib/gui/viewer/task.py", line 136, in __init__ 
    super(BaseTaskTreeViewer, self).__init__(*args, **kwargs) 
    File "/home/user/bin/taskcoach/taskcoachlib/gui/viewer/task.py", line 77, in __init__ 
    super(BaseTaskViewer, self).__init__(*args, **kwargs) 
    File "/home/user/bin/taskcoach/taskcoachlib/gui/viewer/mixin.py", line 85, in __init__ 
    super(FilterableViewerMixin, self).__init__(*args, **kwargs) 
    File "/home/user/bin/taskcoach/taskcoachlib/gui/viewer/base.py", line 583, in __init__ 
    super(TreeViewer, self).__init__(*args, **kwargs) 
    File "/home/user/bin/taskcoach/taskcoachlib/gui/viewer/base.py", line 63, in __init__ 
    self.widget = self.createWidget() 
    File "/home/user/bin/taskcoach/taskcoachlib/gui/viewer/task.py", line 912, in createWidget 
    imageList = self.createImageList() # Has side-effects 
    File "/home/user/bin/taskcoach/taskcoachlib/gui/viewer/base.py", line 191, in createImageList 
    imageList.Add(wx.ArtProvider_GetBitmap(image, wx.ART_MENU, size)) 
    File "/usr/lib64/python2.7/site-packages/wx-3.0-gtk2/wx/_gdi.py", line 6735, in Add 
    return _gdi_.ImageList_Add(*args, **kwargs) 
wx._core.PyAssertionError: C++ assertion "IsOk()" failed at /var/tmp/portage/x11-libs/wxGTK-3.0.2.0-r2/work/wxPython-src-3.0.2.0/src/gtk/bitmap.cpp(923) in GetWidth(): invalid bitmap 

그것은 또한 GUI 오류 메시지가 표시됩니다 : 나는 홈 디렉토리에서 모든 데이터를 삭제, (나는 젠투 사용) wxWidgets에와 wxPython을 다시 컴파일하려고

IDAT: chunk data is too large 
07:11:19: Couldn't load a PNG image - file is corrupted or not enough memory. 
07:11:19: Unknown image data format. 

을하고, 공식 사이트 taskcoach에서 다시 다운로드 .org. 아무것도 도움이되지 않았습니다. 작동 시키도록 도와주세요.

+0

해당 png 이미지가 정상입니까? 다른 앱으로 읽을 수 있습니까? – Ripi2

+0

@Ural, png 라이브러리를 업그레이드 했습니까? 시스템을 업그레이드 했습니까? GTK +? 기형의 PNG를 읽는 티켓 악어가 있었지만, 오래 전에 고쳐 졌다고 믿습니다. – Igor

+0

요청한 png 이미지를 찾을 수 없습니다. 응용 프로그램의 버전이 동일하고 다시 다운로드했기 때문에 응용 프로그램과 함께 제공되며 잘되어야한다고 가정합니다. 예, 저는 보통 시스템을 업데이트하고 업데이트를 받았지만 일반적으로 업데이트는 버그를 수정하기위한 것이지 추가하는 것이 아닙니다. 나는 'emerge -av gtk + pygtk libpng wxGTK wxpython'을 다시 컴파일하려고 시도했지만 여전히 실패합니다 ... – Ural

답변

0

이유를 찾았습니다. https://sourceforge.net/p/libpng/bugs/270/?limit=25

나는 libpng를 1.6.29로 다운 그레이드했으며 문제가 해결되었습니다. 또한 git 버전에서 수정되었지만 새로운 버전은 아직 발표되지 않았습니다.

의 libpng-1.6.32 최대 합리적인 pngrutil.c의 IDAT 청크에 대한 크기를 계산하기 위해 시도 : png_check_chunk_length()을하지만,이 데이터를 추정하는 것을 ZLIB 또는 다른 "적당한"압축기에 의해 생성 된 최소한의 오버 헤드로 데이터를 출력합니다. 그러나 PNG 표준은 그러한 요구 사항을 포함하고 있지 않으며 사실상 https://www.w3.org/TR/PNG/ 섹션 15.2.3 (k)에서 준수하는 디코더는 완전한 이미지 데이터가 몇 개의 IDAT 청크에 저장되는 단일 압축 데이터 스트림으로 표현됩니다. "

git branch libpng16에서 수정되었습니다. 테스트하십시오. IDAT에 대한 더 큰 제한을 설정하여 행당 압축 된 버퍼를 허용합니다. 또한 PNG_USER_CHUNK_MALLOC_MAX 사용자 제한을 사용하므로 사용자는 필요할 경우 더 큰 제한을 설정할 수 있습니다.