You think you found a bug? Please check the following documents first to be sure that it's really an unknown bug.
- the SmartEiffel FAQ
- History of changes in SmartEiffel
- Not yet implemented (http://smarteiffel.loria.fr/misc/NOT_YET_IMPLEMENTED.html)
- Future improvements (http://smarteiffel.loria.fr/papers/future.html)
Next points to check are:
- Compile your application with the
-verboseflag, without the
-no_warningflag, and with all assertions on (default mode, or
-all_checkflag). 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
-verboseflag, without the
-no_warningflag, and with all assertions on -- default mode, or
-all_checkflag) 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
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.