Opened 5 years ago
Closed 5 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 5 years ago by
Attachment: | sigaction.patch added |
---|
comment:1 Changed 5 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
Note: See
TracTickets for help on using
tickets.
Thanks! Should be resolved in
next
now.