And a correction, I ran it again on Ubuntu 18.04, and I reproduce without Ruby as well.
So it is not a Ruby bug. We need to trace it with --debug-flags ExecAll,SyscallBase and try to understand what is going on. ________________________________ From: Rafael Pintar Alevato <rpa.alev...@gmail.com> Sent: Wednesday, November 13, 2019 5:38 PM To: Ciro Santilli <ciro.santi...@arm.com> Cc: gem5-users@gem5.org <gem5-users@gem5.org> Subject: Re: [gem5-users] Bug when using mutex in ARM SE Hi Santilli, thanks for the response! I'm on commit 70bfe7aa57c3fac79433bfdfb1c6732996bfc727 and I have the error with both std::mutex and pthread mutex. The patch you mentioned is already applied on my version, so it does not solve the issue. Programs that doesn't use mutex don't present any problems. Does anyone have an idea of what could be done to solve the problem with Ruby? Em ter, 12 de nov de 2019 às 20:40, Ciro Santilli <ciro.santi...@arm.com<mailto:ciro.santi...@arm.com>> escreveu: Oi Rafael, Thanks for the detailed report. I don't think there is any advantage of using the pthread library currently, at least on ARM. I reproduce on e96ccec8159f91d60bed8342184fb969b06eaf4f Ubuntu 19.04, but only with Ruby. Without Ruby and everything else the same, it works. What makes you think that this is a syscall deadlock bug rather than a Ruby bug, considering that the error message "panic: Page table fault when accessing virtual address 0" suggests a memory error? Worth noting that there was a more or less recent SE deadlock ARM fix at: https://gem5-review.googlesource.com/c/public/gem5/+/21606 ________________________________ From: gem5-users <gem5-users-boun...@gem5.org<mailto:gem5-users-boun...@gem5.org>> on behalf of Rafael Pintar Alevato <rpa.alev...@gmail.com<mailto:rpa.alev...@gmail.com>> Sent: Tuesday, November 12, 2019 7:32 PM To: gem5-users@gem5.org<mailto:gem5-users@gem5.org> <gem5-users@gem5.org<mailto:gem5-users@gem5.org>> Subject: [gem5-users] Bug when using mutex in ARM SE Hello everyone! I'm trying to use a program that uses mutex, but it was entering in deadlock. It was using standard mutex and not pthread library, so first I tried changing it to the pthread mutex. It was still entering in deadlock. After this I cloned a new clean gem5 and compiled it to run some tests. After running the standard tests for pthreads in ARM 64 I had some bugs. Full gem5 output below. Does anyone know if I can fix this? Thank you in advance, Rafael Alevato. Stats: OS: Linux Mint 18.1 Serena Kernel: 4.4.0-53-generic g++: 5.4.0 aarch64-linux-gnu-g++: 5.4.0 gem5 Compiling Command Line: scons build/ARM/gem5.opt CXX=g++ RUBY=True PROTOCOL=MOESI_CMP_directory -j4 Pthread Tests Compiling Command Line: make -f Makefile.aarch64 Execution Command Line: build/ARM/gem5.opt configs/example/se.py -n 16 --cpu-type DerivO3CPU --mem-size 4GB --ruby --l1d_assoc=4 --l1i_assoc=4 --l2_assoc=16 --cacheline_size 64 --l1i_size 64kB --l1d_size 64kB --l2_size 4MB --cmd pthread-tests-aarch64/test_pthread_mutex gem5 Output: gem5 Simulator System. http://gem5.org gem5 is copyrighted software; use the --copyright option for details. gem5 compiled Nov 12 2019 15:50:50 gem5 started Nov 12 2019 16:21:56 gem5 executing on eda01, pid 17621 command line: build/ARM/gem5.opt configs/example/se.py -n 16 --cpu-type DerivO3CPU --mem-size 4GB --ruby --l1d_assoc=4 --l1i_assoc=4 --l2_assoc=16 --cacheline_size 64 --l1i_size 64kB --l1d_size 64kB --l2_size 4MB --cmd pthread-tests-aarch64/test_pthread_mutex Global frequency set at 1000000000000 ticks per second warn: DRAM device capacity (8192 Mbytes) does not match the address range assigned (4096 Mbytes) 0: system.remote_gdb: listening for remote gdb on port 7000 0: system.remote_gdb: listening for remote gdb on port 7001 0: system.remote_gdb: listening for remote gdb on port 7002 0: system.remote_gdb: listening for remote gdb on port 7003 0: system.remote_gdb: listening for remote gdb on port 7004 0: system.remote_gdb: listening for remote gdb on port 7005 0: system.remote_gdb: listening for remote gdb on port 7006 0: system.remote_gdb: listening for remote gdb on port 7007 0: system.remote_gdb: listening for remote gdb on port 7008 0: system.remote_gdb: listening for remote gdb on port 7009 0: system.remote_gdb: listening for remote gdb on port 7010 0: system.remote_gdb: listening for remote gdb on port 7011 0: system.remote_gdb: listening for remote gdb on port 7012 0: system.remote_gdb: listening for remote gdb on port 7013 0: system.remote_gdb: listening for remote gdb on port 7014 0: system.remote_gdb: listening for remote gdb on port 7015 **** REAL SIMULATION **** info: Entering event queue @ 0. Starting simulation... warn: Replacement policy updates recently became the responsibility of SLICC state machines. Make sure to setMRU() near callbacks in .sm files! warn: ignoring syscall set_robust_list(...) warn: ignoring syscall rt_sigaction(...) warn: ignoring syscall rt_sigaction(...) warn: ignoring syscall rt_sigprocmask(...) (further warnings will be suppressed) info: Increasing stack size by one page. warn: ignoring syscall mprotect(...) warn: ClockedObject: Already in the requested power state, request ignored warn: User mode does not have SPSR warn: User mode does not have SPSR warn: ignoring syscall set_robust_list(...) warn: ignoring syscall mprotect(...) warn: User mode does not have SPSR warn: User mode does not have SPSR warn: ignoring syscall set_robust_list(...) warn: ignoring syscall mprotect(...) warn: User mode does not have SPSR warn: User mode does not have SPSR warn: ignoring syscall set_robust_list(...) warn: ignoring syscall mprotect(...) warn: User mode does not have SPSR warn: User mode does not have SPSR warn: ignoring syscall set_robust_list(...) warn: ignoring syscall mprotect(...) warn: User mode does not have SPSR warn: User mode does not have SPSR warn: ignoring syscall set_robust_list(...) warn: ignoring syscall mprotect(...) warn: User mode does not have SPSR warn: User mode does not have SPSR warn: ignoring syscall set_robust_list(...) warn: ignoring syscall mprotect(...) warn: User mode does not have SPSR warn: User mode does not have SPSR warn: ignoring syscall set_robust_list(...) warn: ignoring syscall mprotect(...) warn: User mode does not have SPSR warn: User mode does not have SPSR warn: ignoring syscall set_robust_list(...) warn: ignoring syscall mprotect(...) warn: User mode does not have SPSR warn: User mode does not have SPSR warn: ignoring syscall set_robust_list(...) warn: ignoring syscall mprotect(...) warn: User mode does not have SPSR warn: User mode does not have SPSR warn: ignoring syscall set_robust_list(...) warn: ignoring syscall madvise(...) warn: ignoring syscall madvise(...) panic: Page table fault when accessing virtual address 0 Memory Usage: 5171676 KBytes Program aborted at tick 2488935000 --- BEGIN LIBC BACKTRACE --- build/ARM/gem5.opt(_Z15print_backtracev+0x28)[0x1e96f38] build/ARM/gem5.opt(_Z12abortHandleri+0x46)[0x1ea7a66] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f803e38c390] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x38)[0x7f803cd88428] /lib/x86_64-linux-gnu/libc.so.6(abort+0x16a)[0x7f803cd8a02a] build/ARM/gem5.opt[0xb6a86f] build/ARM/gem5.opt(_ZN21GenericPageTableFault6invokeEP13ThreadContextRK14RefCountingPtrI10StaticInstE+0x57)[0x1ed38d7] build/ARM/gem5.opt(_ZN13DefaultCommitI9O3CPUImplE10commitHeadERK14RefCountingPtrI13BaseO3DynInstIS0_EEj+0x265)[0x22ea6b5] build/ARM/gem5.opt(_ZN13DefaultCommitI9O3CPUImplE11commitInstsEv+0x471)[0x22eb761] build/ARM/gem5.opt(_ZN13DefaultCommitI9O3CPUImplE6commitEv+0x9cc)[0x22ed93c] build/ARM/gem5.opt(_ZN13DefaultCommitI9O3CPUImplE4tickEv+0xb3)[0x22ee863] build/ARM/gem5.opt(_ZN9FullO3CPUI9O3CPUImplE4tickEv+0x152)[0x22f9e32] build/ARM/gem5.opt(_ZN10EventQueue10serviceOneEv+0xc5)[0x1e9dc55] build/ARM/gem5.opt(_Z9doSimLoopP10EventQueue+0x50)[0x1ebace0] build/ARM/gem5.opt(_Z8simulatem+0xd1b)[0x1ebbdcb] build/ARM/gem5.opt[0x1a34659] build/ARM/gem5.opt[0x19d7809] /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x7852)[0x7f803e649772] /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x85c)[0x7f803e78005c] /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x6ffd)[0x7f803e648f1d] /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x85c)[0x7f803e78005c] /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x6ffd)[0x7f803e648f1d] /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x85c)[0x7f803e78005c] /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x6ffd)[0x7f803e648f1d] /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x85c)[0x7f803e78005c] /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCode+0x19)[0x7f803e641da9] /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x613b)[0x7f803e64805b] /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x85c)[0x7f803e78005c] /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x6ffd)[0x7f803e648f1d] /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x85c)[0x7f803e78005c] /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCode+0x19)[0x7f803e641da9] /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyRun_StringFlags+0x76)[0x7f803e6bc1f6] --- END LIBC BACKTRACE --- Aborted IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
_______________________________________________ gem5-users mailing list gem5-users@gem5.org http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users