- 論壇徽章:
- 0
|
1.) Segfault = segmentation fault = the application is trying to access a memory area that belongs to the OS or some other program. The memory management unit in the CPU stops the operation and triggers an exception. The standard segfault exception handler in the kernel kills the program.
As the message is "segfault at 0000000000000000", I'd guess the program probably tried to use an uninitialized pointer, which has a value NULL. It is very likely that your application has a fairly serious bug in it.
The "rip" value is the Instruction Pointer: the program location the CPU was running at the time of the error. It seems it is always exactly the same, so the error is repeatable - that is good.
The "rsp" is the Stack Pointer. Its value seems to vary just a little. If your developer is good, s/he will know whether this is important or not.
2.) Not strange at all. After receiving a segfault, the program cannot continue.
3.) Without having the program source code, this is impossible. Your application developer will have to fix it him/herself.
However, there are some things you can do:
If possible, have your application developer produce a version of the application that includes debug information. If the application is compiled using gcc, this is as simple as adding the "-g" option to the compilation commands.
Before starting the application, run "ulimit -c unlimited". This allows the segfault handler to produce a core dump file when the segfault handler is triggered. This file contains all the memory used by the application, so it might be very big.
Then your application developer needs to run a debugger program on the application and the core file. If the application was compiled with debug information, the debugger can identify exactly on what line of the source code the error happened. The developer can also use the debugger to examine the values of any variables at the time of the error. The debugger has many other features which might be useful too. If your developer does not know how to use a debugger, he/she should definitely learn it.
For Linux, the most common debugger program is named "gdb" and it is available in most Linux distributions. It is usually in the "development tools" category of the distribution's package collection. |
|