Skip to content

Commit

Permalink
do not remove
Browse files Browse the repository at this point in the history
After:
    Revert "Revert "epoll: fix up lock ordering issues""
    This reverts commit 408a982.

I saw the following without this patch:

   $ sudo scripts/run.py -c1 -nv -m4g  -e "/tests/tst-epoll.so"
   ...

   PASS: epoll_wait
   PASS: write
   PASS: epoll_wait
   PASS: epoll_ctl MOD
   PASS: epoll_wait
   PASS: epoll_ctl ADD
   PASS: errno == EEXIST
   Assertion failed: i != f_epolls->end() (/home/asias/src/cloudius-systems/osv/fs/vfs/kern_descrip.cc: epoll_del: 249)

   [backtrace]
   0x0000000000223648 <__assert_fail+24>
   0x000000000041743a <file::epoll_del(epoll_ptr)+186>
   0x00000000003f7682 <epoll_ctl+786>
   0x0000100000c032db <???+12595931>
   0x000000000040510a <osv::application::run_main(std::string, int, char**)+266>
   0x0000000000405847 <osv::application::run_main()+551>
   0x000000000020bbd1 <osv::application::main()+97>
   0x0000000000406698 <???+4220568>
   0x0000000000433745 <???+4405061>
   0x00000000003e38aa <thread_main_c+26>
   0x0000000000389c75 <???+3710069>

   (gdb) bt
   #0  0x00000000003f8e92 in cli_hlt () at /home/asias/src/cloudius-systems/osv/arch/x64/processor.hh:242
   cloudius-systems#1  halt_no_interrupts () at /home/asias/src/cloudius-systems/osv/arch/x64/arch.hh:49
   cloudius-systems#2  osv::halt () at /home/asias/src/cloudius-systems/osv/core/power.cc:34
   cloudius-systems#3  0x000000000022360f in abort (fmt=fmt@entry=0x603b60 "Assertion failed: %s (%s: %s: %d)\n") at /home/asias/src/cloudius-systems/osv/runtime.cc:150
   cloudius-systems#4  0x0000000000223649 in __assert_fail (expr=<optimized out>, file=<optimized out>, line=<optimized out>, func=<optimized out>)
       at /home/asias/src/cloudius-systems/osv/runtime.cc:156
   cloudius-systems#5  0x000000000041743b in file::epoll_del (this=<optimized out>, ep=...) at /home/asias/src/cloudius-systems/osv/fs/vfs/kern_descrip.cc:249
   cloudius-systems#6  0x00000000003f7683 in del (key=..., this=0xffff800001746040) at /home/asias/src/cloudius-systems/osv/core/epoll.cc:96
   cloudius-systems#7  epoll_ctl (epfd=<optimized out>, op=<optimized out>, fd=<optimized out>, event=0x2000002f9d50) at /home/asias/src/cloudius-systems/osv/core/epoll.cc:283
   cloudius-systems#8  0x0000100000c032dc in test_epolloneshot () at /home/asias/src/cloudius-systems/osv/tests/tst-epoll.cc:78
   cloudius-systems#9  main (ac=<optimized out>, av=<optimized out>) at /home/asias/src/cloudius-systems/osv/tests/tst-epoll.cc:231
   cloudius-systems#10 0x000000000040510b in osv::application::run_main (this=this@entry=0xffffa00001561f18, path="/tests/tst-epoll.so", argc=argc@entry=1,
       argv=argv@entry=0xffffa00002994760) at /home/asias/src/cloudius-systems/osv/core/app.cc:182
   cloudius-systems#11 0x0000000000405848 in osv::application::run_main (this=this@entry=0xffffa00001561f18) at /home/asias/src/cloudius-systems/osv/core/app.cc:197
   cloudius-systems#12 0x000000000020bbd2 in osv::application::main (this=0xffffa00001561f18) at /home/asias/src/cloudius-systems/osv/core/app.cc:144
   cloudius-systems#13 0x0000000000406699 in operator() (__closure=0x0, app=<optimized out>) at /home/asias/src/cloudius-systems/osv/core/app.cc:104
   cloudius-systems#14 osv::application::__lambda3::_FUN (app=<optimized out>) at /home/asias/src/cloudius-systems/osv/core/app.cc:106
   cloudius-systems#15 0x0000000000433746 in operator() (__closure=0xffffa00003320600) at /home/asias/src/cloudius-systems/osv/libc/pthread.cc:97
   cloudius-systems#16 std::_Function_handler<void(), pthread_private::pthread::pthread(void* (*)(void*), void*, sigset_t, const pthread_private::thread_attr*)::__lambda7>::_M_invoke(const std::_Any_data &) (__functor=...) at /home/asias/src/cloudius-systems/osv/external/x64/gcc.bin/usr/include/c++/4.8.2/functional:2071
   cloudius-systems#17 0x00000000003e38ab in main (this=0xffff80000354d050) at /home/asias/src/cloudius-systems/osv/core/sched.cc:940
   cloudius-systems#18 sched::thread_main_c (t=0xffff80000354d050) at /home/asias/src/cloudius-systems/osv/arch/x64/arch-switch.hh:137
   cloudius-systems#19 0x0000000000389c76 in thread_main () at /home/asias/src/cloudius-systems/osv/arch/x64/entry.S:113
  • Loading branch information
asias committed Aug 28, 2014
1 parent 4a2eba0 commit 855019b
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion core/epoll.cc
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ class epoll_file final : public special_file {
auto i = map.find(key);
if (i != map.end()) {
i->second.events = 0;
key._file->epoll_del({ this, key });
//key._file->epoll_del({ this, key });
}
}
trace_epoll_ready(key._fd, key._file, active);
Expand Down

1 comment on commit 855019b

@asias
Copy link
Owner Author

@asias asias commented on 855019b Aug 28, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If I replace the key._file->epoll_del() with a abort I got:
'''
(gdb) bt
#0 0x00000000003f8e62 in cli_hlt () at /home/asias/src/cloudius-systems/osv/arch/x64/processor.hh:242
cloudius-systems#1 halt_no_interrupts () at /home/asias/src/cloudius-systems/osv/arch/x64/arch.hh:49
cloudius-systems#2 osv::halt () at /home/asias/src/cloudius-systems/osv/core/power.cc:34
cloudius-systems#3 0x000000000022360f in abort (fmt=fmt@entry=0x603cb5 "Aborted\n") at /home/asias/src/cloudius-systems/osv/runtime.cc:150
cloudius-systems#4 0x0000000000223630 in abort () at /home/asias/src/cloudius-systems/osv/runtime.cc:117
cloudius-systems#5 0x00000000003f8dc6 in process_activity (maxevents=1024, events=0x2000002fcdc0, activity=std::unordered_set with 1 elements = {...}, this=0xffff800003535040)

at /home/asias/src/cloudius-systems/osv/core/epoll.cc:182

cloudius-systems#6 epoll_file::wait (this=0xffff800003535040, events=events@entry=0x2000002fcdc0, maxevents=maxevents@entry=1024, timeout_ms=timeout_ms@entry=0)

at /home/asias/src/cloudius-systems/osv/core/epoll.cc:132

cloudius-systems#7 0x00000000003f7241 in epoll_wait (epfd=, events=0x2000002fcdc0, maxevents=1024, timeout_ms=0)

at /home/asias/src/cloudius-systems/osv/core/epoll.cc:313

cloudius-systems#8 0x0000100000c0308b in test_epolloneshot () at /home/asias/src/cloudius-systems/osv/tests/tst-epoll.cc:56
cloudius-systems#9 main (ac=, av=) at /home/asias/src/cloudius-systems/osv/tests/tst-epoll.cc:231
cloudius-systems#10 0x00000000004050db in osv::application::run_main (this=this@entry=0xffffa00001561f18, path="/tests/tst-epoll.so", argc=argc@entry=1,

argv=argv@entry=0xffffa00002994770) at /home/asias/src/cloudius-systems/osv/core/app.cc:182

cloudius-systems#11 0x0000000000405818 in osv::application::run_main (this=this@entry=0xffffa00001561f18) at /home/asias/src/cloudius-systems/osv/core/app.cc:197
cloudius-systems#12 0x000000000020bbd2 in osv::application::main (this=0xffffa00001561f18) at /home/asias/src/cloudius-systems/osv/core/app.cc:144
cloudius-systems#13 0x0000000000406669 in operator() (__closure=0x0, app=) at /home/asias/src/cloudius-systems/osv/core/app.cc:104
cloudius-systems#14 osv::application::__lambda3::_FUN (app=) at /home/asias/src/cloudius-systems/osv/core/app.cc:106
cloudius-systems#15 0x0000000000433716 in operator() (__closure=0xffffa00001581600) at /home/asias/src/cloudius-systems/osv/libc/pthread.cc:97
cloudius-systems#16 std::_Function_handler<void(), pthread_private::pthread::pthread(void* ()(void), void*, sigset_t, const pthread_private::thread_attr*)::__lambda7>::_M_invoke

(const std::_Any_data &) (__functor=...) at /home/asias/src/cloudius-systems/osv/external/x64/gcc.bin/usr/include/c++/4.8.2/functional:2071
cloudius-systems#17 0x00000000003e38ab in main (this=0xffff80000352d050) at /home/asias/src/cloudius-systems/osv/core/sched.cc:940
cloudius-systems#18 sched::thread_main_c (t=0xffff80000352d050) at /home/asias/src/cloudius-systems/osv/arch/x64/arch-switch.hh:137
cloudius-systems#19 0x0000000000389c76 in thread_main () at /home/asias/src/cloudius-systems/osv/arch/x64/entry.S:113

'''

Please sign in to comment.