Bug 4688

Summary: Crash on select a lot games
Product: [Development] Sisyphus Reporter: Eugene Vlasov <eugvv@altlinux.ru>
Component: pysolAssignee: Alexei Takaseev <taf@altlinux.org>
Status: CLOSED FIXED QA Contact: qa-sisyphus@altlinux.org
Severity: normal    
Priority: P3 CC: antohami@altlinux.org, cas@altlinux.org, cow@altlinux.org, darktemplar@altlinux.org, enp@altlinux.org, evg@altlinux.org, george@altlinux.org, imz@altlinux.org, lav@altlinux.org, master@rootcafe.net, mithraen@altlinux.org, nbr@altlinux.org, obirvalger@altlinux.org, qa_viy@altlinux.org, rider@altlinux.org, sem@altlinux.org, shaba@altlinux.org, sin@altlinux.org, slev@altlinux.org, vitty@altlinux.org, viy@altlinux.org
Version: unstable   
Hardware: all   
OS: Linux   

Description From 2004-07-05 16:14:23
[eugene@eugene-home eugene]$ rpm -qa|grep pysol
pysol-sound-server-3.00-alt4
pysol-4.82-alt3
[eugene@eugene-home eugene]$ rpm -qa|grep ^python|sort
python-2.3.3-alt10
python-base-2.3.3-alt10
python-dev-2.3.3-alt10
python-doc-2.3.3-alt1
python-info-2.3.3-alt10
python-modules-2.3.3-alt10
python-modules-bsddb-2.3.3-alt10
python-modules-compiler-2.3.3-alt10
python-modules-curses-2.3.3-alt10
python-modules-email-2.3.3-alt10
python-modules-encodings-2.3.3-alt10
python-modules-hotshot-2.3.3-alt10
python-modules-logging-2.3.3-alt10
python-modules-tkinter-2.3.3-alt10
python-modules-xml-2.3.3-alt10
python-strict-2.3.3-alt10
python-tools-i18n-2.3.3-alt10
python-tools-idle-2.3.3-alt10
python-tools-modulator-2.3.3-alt10

При выборе многих игр выдает ошибки вроде следующей:
  Internal error. Please report this bug:
  exception.TypeError:
unbound method createGame() must be called with Klondike instance as first
argument (got EightTimesEight instance instead)
и вылетает. После этого запустить его можно только после удаления ~/.pysol/ с
потерей всех настроек и статистики.
Вот список игр, на которых это воспроизводится:
  8 x 8, Achtmal Acht, American Toad, Baby Spiderette, Backer's Dozen, Batsford,
Big Harp, Black Widow, Blind Alleys, Brunswick, Busy Aces, Casino Klondike,
Chameleon, Chessboard, Corona, Courtyard, Cruel, Deuces, Die Russische, Die
Schlange, Double Canfield, Double Klondike by Threes, Double Rail, Eastcliff,
Forty and Eight, Free Napoleon, Gargantua, Good Measure, Grandmother's Game,
Ground for a Divorce, Indian, Irmgard, Klondike by Threes, Lady Betty, Little
Forty, Lucas, Maria, Martha, Midshipman, Milligan Cell, Napoleon, Pas Seul,
Peek, Poker Shuffle, Quadrangle, Rainbow, Rainfall, Red and Black, Scorpion,
Simple Simon, Single Rail, Spanish Patience, Spider, Spiderette, Stalactites,
Steps, Storehouse, Three Shuffles and a Draw, Thumb and Pouch, Trefoil,
Variegated Canfield, Vegas Klondike, Waning Moon, Wasp, Westcliff, Whitehead,
Will o'the Wisp, Zebra
------- Comment #1 From 2004-07-05 16:39:23 -------
По всему похоже, что это те игры, которые имеются в меню выбора, но реально
отсутствующие. Надо патчить исходники :(
------- Comment #2 From 2004-07-05 17:17:27 -------
Нет, эти игры в исходниках есть (я немного поковырялся). Проблема в том, что
там
довольно сложная система наследования. Ошибка возникает при вызове методов
класса - родителя, которые перекрыты (конструкция вида BaseClass.Method(self,
...)). Почему такая конструкция не работает в данном случае - не знаю.
------- Comment #3 From 2004-07-07 04:57:32 -------
Не, на таком уровне в python я не спец. Я пакет-то вытащил из orphaned только
потому, что некоторые игры из него понравились. А уж настолько серьезно
перетряхивать потроха исходников моих знаний явно недостаточно. Летом как бы
обещается бета пятой версии pysol, может там что сделают?
------- Comment #4 From 2004-07-12 20:38:27 -------
Кажется я нашел решение. Вот кусок дебиановского патча, который исправляет
положение:

---- pysol-4.82.orig/src/main.py
+++ pysol-4.82/src/main.py
@@ -92,7 +92,7 @@

     # try to load plugins
     if not "--noplugins" in args[1:]:
-        for dir in (os.path.join(app.dataloader.dir, "games"),
+        for dir in (#os.path.join(app.dataloader.dir, "games"),
                     os.path.join(app.dataloader.dir, "plugins"),
                     app.dn.plugins):
             try:

Проблема в том, что файлы из каталога games импортируются дважды - из pysol.py
и
из main.py.
------- Comment #5 From 2004-07-13 18:39:32 -------
Нда, как все просто, когда знаешь куда смотреть :)

Патч приложен к сборке pysol-4.82-alt4. Ушло в incoming
------- Comment #6 From 2007-01-18 21:44:26 -------
*** Bug 1412 has been marked as a duplicate of this bug. ***