cloudius-systems / mgmt

20 stars 11 forks source link

"exception nested too deeply" when running "make check" on httpserver #59

Open tgrabiec opened 10 years ago

tgrabiec commented 10 years ago
:~/src/osv $ make image=mgmt
:~/src/osv/mgmt/httpserver $ make check
cd ../.. && mgmt/httpserver/tests/testhttpserver.py
OSv v0.09-216-g87bb832
eth0: 192.168.122.15
..--2014-06-21 14:18:20--  http://localhost:8000/file/usr/mgmt/test-file.txt?op=GET
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:8000... connected.
HTTP request sent, awaiting response... 200 OK
Length: 784890 (766K) [text/plain]
Saving to: 'tmp-test-dwnld.txt'

100%[===============================>] 784.890     --.-K/s   in 0,02s   

2014-06-21 14:18:20 (41,4 MB/s) - 'tmp-test-dwnld.txt' saved [784890/784890]

...........
[/]% ....exception nested too deeply
[backtrace]
tgrabiec commented 10 years ago

After removing print_backtrace() call the backtrace is obtainable:

#0  0x00000000003c7e72 in cli_hlt () at /home/tgrabiec/src/osv/arch/x64/processor.hh:241
#1  halt_no_interrupts () at /home/tgrabiec/src/osv/arch/x64/arch.hh:48
#2  osv::halt () at /home/tgrabiec/src/osv/core/power.cc:34
#3  0x0000000000220340 in abort (fmt=fmt@entry=0x630340 "exception nested too deeply") at /home/tgrabiec/src/osv/runtime.cc:127
#4  0x0000000000368834 in enter_exception (this=<optimized out>) at /home/tgrabiec/src/osv/arch/x64/arch-cpu.cc:19
#5  sched::exception_guard::exception_guard (this=<optimized out>) at /home/tgrabiec/src/osv/arch/x64/arch-cpu.cc:37
#6  0x000000000036b375 in page_fault (ef=0xffff80003fd3d038) at /home/tgrabiec/src/osv/arch/x64/mmu.cc:22
#7  <signal handler called>
#8  0x00000000004fd81c in _Unwind_IteratePhdrCallback ()
#9  0x00000000004160bf in operator() (ml=..., __closure=<synthetic pointer>) at /home/tgrabiec/src/osv/libc/dlfcn.cc:107
#10 with_modules<dl_iterate_phdr(int (*)(dl_phdr_info*, size_t, void*), void*)::__lambda1> (f=..., this=0xffffa0003fc08400) at /home/tgrabiec/src/osv/include/osv/elf.hh:551
#11 dl_iterate_phdr (callback=0x4fd730 <_Unwind_IteratePhdrCallback>, data=0xffff80003fd3b7f0) at /home/tgrabiec/src/osv/libc/dlfcn.cc:112
#12 0x00000000004fe06f in _Unwind_Find_FDE ()
#13 0x00000000004fa2d1 in uw_frame_state_for ()
#14 0x00000000004fc083 in _Unwind_RaiseException ()
#15 0x0000000000420d62 in __cxa_throw ()
#16 0x00000000003d1cab in size (f=...) at /home/tgrabiec/src/osv/fs/fs.cc:18
#17 0x000000000032345d in mmu::file_vma::fault (this=0xffffa0003f84d680, addr=0x1000015d6000, ef=0xffff80003fd3c038) at /home/tgrabiec/src/osv/core/mmu.cc:1564
#18 0x000000000031f6c5 in mmu::vm_fault (addr=<optimized out>, addr@entry=0x1000015d686c, ef=ef@entry=0xffff80003fd3c038) at /home/tgrabiec/src/osv/core/mmu.cc:1217
#19 0x000000000036b3ba in page_fault (ef=0xffff80003fd3c038) at /home/tgrabiec/src/osv/arch/x64/mmu.cc:38
#20 <signal handler called>
#21 0x00000000004fd81c in _Unwind_IteratePhdrCallback ()
#22 0x00000000004160bf in operator() (ml=..., __closure=<synthetic pointer>) at /home/tgrabiec/src/osv/libc/dlfcn.cc:107
#23 with_modules<dl_iterate_phdr(int (*)(dl_phdr_info*, size_t, void*), void*)::__lambda1> (f=..., this=0xffffa0003fc08400) at /home/tgrabiec/src/osv/include/osv/elf.hh:551
#24 dl_iterate_phdr (callback=0x4fd730 <_Unwind_IteratePhdrCallback>, data=0xffff8000382cf820) at /home/tgrabiec/src/osv/libc/dlfcn.cc:112
#25 0x00000000004fe06f in _Unwind_Find_FDE ()
#26 0x00000000004fa2d1 in uw_frame_state_for ()
#27 0x00000000004fc083 in _Unwind_RaiseException ()
#28 0x0000000000420d62 in __cxa_throw ()
#29 0x00000000003d1cab in size (f=...) at /home/tgrabiec/src/osv/fs/fs.cc:18
#30 0x000000000032345d in mmu::file_vma::fault (this=0xffffa0003f84d680, addr=0x1000013d7000, ef=0xffff8000382d0068) at /home/tgrabiec/src/osv/core/mmu.cc:1564
#31 0x000000000031f6c5 in mmu::vm_fault (addr=<optimized out>, addr@entry=0x1000013d7fb2, ef=ef@entry=0xffff8000382d0068) at /home/tgrabiec/src/osv/core/mmu.cc:1217
#32 0x000000000036b3ba in page_fault (ef=0xffff8000382d0068) at /home/tgrabiec/src/osv/arch/x64/mmu.cc:38
#33 <signal handler called>
#34 0x00001000013d7fb2 in ?? ()
#35 0x0000200008b93d90 in ?? ()
#36 0x00000000003a8e86 in std_malloc (alignment=0x10, size=0xffffa00038428950) at /home/tgrabiec/src/osv/core/mempool.cc:1125
#37 malloc (size=0x1000019ed788) at /home/tgrabiec/src/osv/core/mempool.cc:1322
gleb-cloudius commented 10 years ago

This is a manifestation of the same problem as was reported earlier with assert failure in get_arcbuf(): file is accessed after root file system is unmounted. We need to stop other cpus in shutdown() before call to vfs_exit().