Bug report

From SmartEiffelWiki

You think you found a bug? Please check the following documents first to be sure that it's really an unknown bug.

Next points to check are:

  • Compile your application with the -verbose flag, without the -no_warning flag, and with all assertions on (default mode, or -all_check flag). This may reveal a problem in the code you're trying to compile rather than in SmartEiffel...
  • Then check the bug is not referenced in the bug database. Do not hesitate to provide more details though.

When you fill a bug report, give as much informations as you can. Now you are ready to go to the bugs and improvements database (http://gforge.inria.fr/tracker/?group_id=184).

What Is a Good Bug Report?

A good and useful bug report -- that is, one that is more likely to be fixed -- is one that respects the following simple guideline: BE PRECISE . More precisely:

  • Try to isolate the problem on a small program, put this one in your bug report with all instructions necessary to reproduce the problem.
  • Don't forget to tell us the compilation command you used.
  • If for any reason you can't send us the small program mentioned above, things may be much more difficult for us. So give us all the relevant information you have. The compilation command line that creates the problem (once again, preferably, with the -verbose flag, without the -no_warning flag, and with all assertions on -- default mode, or -all_check flag) and its verbose output. The execution stack trace you get in case of a crash. Whether the problem occurs with any assertion level or not. Whether the GC is concerned (try with and w/o the -no_gc flag).

How to Make a Stack Trace

When a SmartEiffel tool crashes (segfault, sig11, ...) you can help us by providing a stack trace of the SmartEiffel tool. For instance, here are step-by-step instructions to create a stack-trace for the compile_to_c tool on a unix-ish system using the bash shell.

First, compile a version of the smarteiffel tool with assertions enabled. We suggest putting it in a dedicated directory (here, se_with_stack_trace)

mkdir ~/se_with_stack_trace
cd ~/se_with_stack_trace
compile -debug_check -flat_check -no_gc -o compile_to_c compile_to_c

Now, you can use the freshly compiled tool to process your program as usual. Use redirection to store the stack trace into a file (the -verbose flag gives us even more information).

cd ~/my_project
~/se_with_stack_trace/compile_to_c my_project -verbose > stack_trace.txt 2>&1

If you are having trouble with another smarteiffel tool, you can apply the same instructions, substituting the tool's name (eiffeldoc, class_check, compile_to_jvm ...) for the emphasised compile_to_c in the code snippets above. Just compile the tool with assertions, and then use it in the same way you would use the regular tool. Just don't forget to redirect its outpout to a file.

Other languages