Opened 7 years ago
Closed 6 years ago
#78 closed defect (fixed)
Sigaction in enquiry mode causes unexpected error while checking
| Reported by: | Lukáš Zaoral | Owned by: | |
|---|---|---|---|
| Priority: | major | Milestone: | 4.3 |
| Component: | DiOS | Keywords: | |
| Cc: | kdudka@…, jamartis@…, lzaoral@… |
Description
Hello, I was trying to check gzip 1.10, but Divine always failed with a memory error in the DiOS kernel. The following code is a minimal example of this issue:
#include <signal.h>
#include <stddef.h>
int main(void) {
struct sigaction act;
sigaction(SIGINT, NULL, &act);
}
The result of divine check is:
compiling signal.c
loading bitcode … DiOS … LART … RR … constants … done
booting … done
states per second: 86.9565
state count: 2
mips: 0.43
error found: yes
error trace: |
FAULT: null pointer dereference: [global* 0 0 ddn]
[0] FATAL: memory error in kernel
active stack:
- symbol: void __dios::FaultBase::handler<__dios::Upcall<__dios::fs::VFS<__dios::ProcessManager<__dios::Fault<__dios::Scheduler<__dios::Base> > > > > >(_VM_Fault, _VM_Frame*, void (*)())
location: /dios/include/dios/sys/fault.hpp:118
- symbol: __dios::Scheduler<__dios::Base>::sigaction(int, sigaction const*, sigaction*)
location: /dios/include/dios/sys/sched_base.hpp:258
- symbol: __dios::Scheduler<__dios::Base>::rt_sigaction(int, sigaction const*, sigaction*, unsigned long)
location: /dios/include/dios/sys/sched_base.hpp:265
- symbol: __dios::SysProxy::rt_sigaction(int, sigaction const*, sigaction*, unsigned long)
location: /dios/include/sys/argpad.hpp:35
- symbol: __libc_rt_sigaction
location: /dios/include/sys/argpad.hpp:95
- symbol: __libc_sigaction
location: /dios/src/libc/signal/sigaction.c:9
- symbol: main
location: signal.c:6
- symbol: __dios_start
location: /dios/src/libc/sys/start.cpp:102
a report was written to signal.report
Even though being possible by the POSIX standard, the implementation in the sched_base.hpp file never expects the second argument of sigaction to be NULL. The enclosed patch should address this issue.
After patching, both the code above and gzip 1.10 are checked successfully.
Attachments (1)
Change History (2)
Changed 7 years ago by
| Attachment: | sigaction.patch added |
|---|
comment:1 Changed 6 years ago by
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
Note: See
TracTickets for help on using
tickets.
Thanks! Should be resolved in
nextnow.