On Thu, 2010-07-08 at 11:16 +0200, Karel Klic wrote:
Hi,
I have written a document that describes how an interpreted language should interact with ABRT, as requested by Jirka. I tried to write it for non-ABRT people and describe the situation as we have it now (unfortunately src/Daemon/MiddleWare.cpp must be patched when adding an interpreter support).
This file should go to doc/INTERPRETED_LANGUAGES in our repository.
Looks good, please add to git. A few suggestions:
EXECUTABLE The file with the main entry point of the application. Might be a JAR archive, a script file, a bytecode file, or the interpreter. It should be a real file on the filesystem, so ABRT can check the origin of the file (source package). If the file is not known, the most appropriate is to shortly describe the reason why it is not known in the field, e.g. "Exception raised from Python shell".
Should we suggest to not save such crashes? They are hardly useful: someone experiments in interactive python or perl, and BOOM - we get completely useless crash dumps, possibly many of them while the experimenting continues.
ANALYZER The name of an analyzer plugin which should be run during the analysis.
add something like: "...It is used to choose appropriate method of post processing for the crash dump. Sensible names are "python", "perl", "java" etc."
BASENAME Short string indicating the origin of the event. It is used as a part of directory name in /var/spool/abrt. Use "python" for Python exceptions, "ruby" for ruby interpreter, "java" for JRE.
I'd rephrase it, showing how exactly it is going to be used: "It is used as a part of directory name: /var/spool/abrt/BASENAME-suffix"
BACKTRACE The backtrace in a format that is commonly used by the interpreter.
(1) the phrase is unclear. Maybe: "The backtrace at the moment of the crash, if it is available. May include other useful information. For example, for ccpp crashes, it includes register dump." (2) Is it mandatory? (3) What to supply if it is not available?
Here is an example of a crash report from Python, as it is written to the socket: PID=563\0 EXECUTABLE=/usr/bin/python\0 ANALYZER=Python\0 BASENAME=pyhook\0 REASON=CCMainWindow.py:1:<module>:ZeroDivisionError: integer division or modulo by zero\0 BACKTRACE=%s\0 DONE\0
A better BACKTRACE= value is needed here.