[Python-de] Blues in _d minor

Gerson Kurz Gerson.Kurz at t-online.de
Fri May 16 18:18:01 EDT 2003


Python erobert bald Frankreich (nächste Woche, um genauer zu sein, in Form
einer Emulation), und ich hatte da heute ein Problem, was mich 1 Stunde und
n (bei n eine vielstellige Zahl) Nerven gekostet hat.

Problem:

python.exe beendet sich im Betrieb mit "abnormal program termination".

Und tritt natürlich nur auf dem total abgespeckten Release-PC auf, nicht bei
mir. Und zwar "manchmal".

Suche:

Im Debugger draufhängen -> Access Violation in python22.dll

Lösungsansatz:

Debugversion einspielen. Aus Gründen, die mir unverständlich und letztlich
wesensfremd bleiben müssen, hat jemand (BDFL? Tim? Struppi?) entschieden,
daß die Debugversion nicht einfach ein Debugbuild ist, nein, sie heisst
anders (meine ad-hoc-Vermutung dazu ist, daß jemand die brilliante Idee
hatte, die Prototypen in DEBUG anders zu definieren als in RELEASE, in der
Annahme, daß im Debug eh alles anders sein sollte wie im Release weil Debug
macht man ja nicht um Fehler im Release zu finden, nicht?)

Das bedeutet erstmal python_d bauen, python_d.exe und python22_d.dll
einspielen, feststellen daß pyxml nicht im debug mode läuft, sich fragen wie
man mit setup.py ein debugbinary erzeugt; feststellen, daß das
rauskommentieren des xml-code schneller geht; _socket_d fehlt => übersetzen,
win32api_d fehlt => übersetzen, etc. für alle win32*.pyds, mit zu Berge
stehenden Haaren feststellen, daß

import pywintypes

in der Debugversion nur durch einen FIESEN hack einbindbar ist (näheres
siehe Zope:
http://cvs.zope.org/Zope2/ZServer/ZService.py.diff?r1=1.5&r2=1.6),

und all dies nur um nach geraumer Zeit festzustellen die

Ursache:

ein schimmliges

	return Py_None

ohne incref in einer (meiner) Extension-DLLs ist. Arg!!!!!! d.h. Gefunden
habe ich es so: es gab eine Access Violation bei Decref(Py_None), und da war
mir dann klar, wo ich in meinem Code suchen muß.

Fazit:

Die Idee mit _d saugt, diesen Anfängerfehler (ich weiß) hätte man auch in
wenigen Sekunden finden können : statt dessen eine Irrfahrt durch die
Pythonsourcen und die Magie der Endung _d.

Grummelnd,
Gerson









More information about the Python-de mailing list