Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error with syscall 318 for gem5 in syscall mode SE, when executing with a multi agent reinforcement learning algorithm #161

Open
kailashg26 opened this issue Oct 18, 2021 · 2 comments

Comments

@kailashg26
Copy link

kailashg26 commented Oct 18, 2021

I'm trying to execute a python algorithm (https://github.com/shariqiqbal2810/maddpg-pytorch) on gem5 in se mode in X86. But, at first I got an error syscall 318 out of range. So, I tried to import the get random function into the syscalltlb64 source code, like this:

{ 313, "finit_module" },
{ 314, "sched_setattr" },
{ 315, "sched_getattr" },
{ 316, "renameat2" },
{ 317, "seccomp" },
{ 318, "getrandom"},
{ 319, "memfd_create" },
{ 320, "kexec_file_load" },
{ 321, "bpf" },

I'm trying to execute a python algorithm (https://github.com/shariqiqbal2810/maddpg-pytorch) on gem5 in se mode in X86. But, at first I got an error syscall 318 out of range. So, I tried to import the get random function into the syscalltlb64 source code, like this:

{ 313, "finit_module" },
{ 314, "sched_setattr" },
{ 315, "sched_getattr" },
{ 316, "renameat2" },
{ 317, "seccomp" },
{ 318, "getrandom"},
{ 319, "memfd_create" },
{ 320, "kexec_file_load" },
{ 321, "bpf" },

Again, I got an error saying syscall 318 unimplemented. So, I just did:

{ 318, "getrandom", getrandomFunc},

Again, the problem continues as I got an error saying:

    {318, "getrandom", <expression error>}, {319, "memfd_create"}, {320, "kexec_file_load"}, {321, "bpf"}}' from '<brace-enclosed initializer list>' to 'gem5::SyscallDescTable<gem5::X86ISA::EmuLinux::SyscallABI64>'
  374 | };
      | ^
      | |
      | <brace-enclosed initializer list>
scons: *** [build/X86/arch/x86/linux/syscall_tbl64.o] Error 1
scons: building terminated because of errors.
*** Summary of Warnings ***

Can anyone help me how to solve this problem?
Note: My linux kernel version is 5.4.0-88-generic and I'm using ubuntu 20.04 LTS.
Thanks for the help

@cirosantilli cirosantilli changed the title Error with syscall 318 for gem5, when executing with a multi agent reinforcement learning algorithm Error with syscall 318 for gem5 in syscall mode SE, when executing with a multi agent reinforcement learning algorithm Oct 18, 2021
@cirosantilli
Copy link
Owner

You need to have a look at the compilation error closely, there should be something above the lines you gave that explains the problem better. Try to do something more similar to other nearby lines above.

@kailashg26
Copy link
Author

Hello cirosantilli,
This is my compilation error.
scons: Building targets ...
[VER TAGS] -> X86/sim/tags.cc
[ CXX] X86/arch/x86/linux/syscall_tbl64.cc -> .o
build/X86/arch/x86/linux/syscall_tbl64.cc:370:25: error: 'getrandomFunc' was not declared in this scope
370 | { 318, "getrandom", getrandomFunc},
| ^~~~~~~~~~~~~
build/X86/arch/x86/linux/syscall_tbl64.cc:374:1: error: could not convert '{{0, "read", readFuncgem5::X86Linux64}, {1, "write", writeFuncgem5::X86Linux64}, {2, "open", openFuncgem5::X86Linux64}, {3, "close", gem5::closeFunc}, {4, "stat", stat64Funcgem5::X86Linux64}, {5, "fstat", fstat64Funcgem5::X86Linux64}, {6, "lstat", lstat64Funcgem5::X86Linux64}, {7, "poll", pollFuncgem5::X86Linux64}, {8, "lseek", gem5::lseekFunc}, {9, "mmap", mmapFuncgem5::X86Linux64}, {10, "mprotect", gem5::ignoreFunc}, {11, "munmap", gem5::munmapFunc}, {12, "brk", gem5::brkFunc}, {13, "rt_sigaction", gem5::ignoreWarnOnceFunc}, {14, "rt_sigprocmask", gem5::ignoreWarnOnceFunc}, {15, "rt_sigreturn"}, {16, "ioctl", ioctlFuncgem5::X86Linux64}, {17, "pread64", pread64Funcgem5::X86Linux64}, {18, "pwrite64", pwrite64Funcgem5::X86Linux64}, {19, "readv", readvFuncgem5::X86Linux64}, {20, "writev", writevFuncgem5::X86Linux64}, {21, "access", gem5::ignoreFunc}, {22, "pipe", gem5::pipeFunc}, {23, "select", selectFuncgem5::X86Linux64}, {24, "sched_yield", gem5::ignoreWarnOnceFunc}, {25, "mremap", mremapFuncgem5::X86Linux64}, {26, "msync"}, {27, "mincore"}, {28, "madvise", gem5::ignoreFunc}, {29, "shmget"}, {30, "shmat"}, {31, "shmctl"}, {32, "dup", gem5::dupFunc}, {33, "dup2", gem5::dup2Func}, {34, "pause"}, {35, "nanosleep", gem5::ignoreWarnOnceFunc}, {36, "getitimer"}, {37, "alarm"}, {38, "setitimer"}, {39, "getpid", gem5::getpidFunc}, {40, "sendfile"}, {41, "socket", socketFuncgem5::X86Linux64}, {42, "connect", gem5::connectFunc}, {43, "accept", acceptFuncgem5::X86Linux64}, {44, "sendto", gem5::sendtoFunc}, {45, "recvfrom", gem5::recvfromFunc}, {46, "sendmsg", gem5::sendmsgFunc}, {47, "recvmsg", gem5::recvmsgFunc}, {48, "shutdown", gem5::shutdownFunc}, {49, "bind", gem5::bindFunc}, {50, "listen", gem5::listenFunc}, {51, "getsockname", gem5::getsocknameFunc}, {52, "getpeername", gem5::getpeernameFunc}, {53, "socketpair", socketpairFuncgem5::X86Linux64}, {54, "setsockopt", gem5::setsockoptFunc}, {55, "getsockopt", gem5::getsockoptFunc}, {56, "clone", cloneFuncgem5::X86Linux64}, {57, "fork"}, {58, "vfork"}, {59, "execve", execveFuncgem5::X86Linux64}, {60, "exit", gem5::exitFunc}, {61, "wait4", wait4Funcgem5::X86Linux64}, {62, "kill"}, {63, "uname", gem5::X86ISA::unameFunc}, {64, "semget"}, {65, "semop"}, {66, "semctl"}, {67, "shmdt"}, {68, "msgget"}, {69, "msgsnd"}, {70, "msgrcv"}, {71, "msgctl"}, {72, "fcntl", gem5::fcntlFunc}, {73, "flock"}, {74, "fsync"}, {75, "fdatasync", gem5::ignoreFunc}, {76, "truncate", gem5::truncateFunc}, {77, "ftruncate", gem5::ftruncateFunc}, {78, "getdents", gem5::getdentsFunc}, {79, "getcwd", gem5::getcwdFunc}, {80, "chdir", gem5::chdirFunc}, {81, "fchdir"}, {82, "rename", gem5::renameFunc}, {83, "mkdir", gem5::mkdirFunc}, {84, "rmdir", gem5::rmdirFunc}, {85, "creat"}, {86, "link", gem5::linkFunc}, {87, "unlink", gem5::unlinkFunc}, {88, "symlink", gem5::symlinkFunc}, {89, "readlink", gem5::readlinkFunc}, {90, "chmod", gem5::ignoreFunc}, {91, "fchmod"}, {92, "chown"}, {93, "fchown"}, {94, "lchown"}, {95, "umask", gem5::umaskFunc}, {96, "gettimeofday", gettimeofdayFuncgem5::X86Linux64}, {97, "getrlimit", getrlimitFuncgem5::X86Linux64}, {98, "getrusage", getrusageFuncgem5::X86Linux64}, {99, "sysinfo", sysinfoFuncgem5::X86Linux64}, {100, "times", timesFuncgem5::X86Linux64}, {101, "ptrace"}, {102, "getuid", gem5::getuidFunc}, {103, "syslog"}, {104, "getgid", gem5::getgidFunc}, {105, "setuid"}, {106, "setgid"}, {107, "geteuid", gem5::geteuidFunc}, {108, "getegid", gem5::getegidFunc}, {109, "setpgid", gem5::setpgidFunc}, {110, "getppid", gem5::getppidFunc}, {111, "getpgrp", gem5::getpgrpFunc}, {112, "setsid"}, {113, "setreuid"}, {114, "setregid"}, {115, "getgroups"}, {116, "setgroups"}, {117, "setresuid", gem5::ignoreFunc}, {118, "getresuid"}, {119, "setresgid"}, {120, "getresgid"}, {121, "getpgid"}, {122, "setfsuid"}, {123, "setfsgid"}, {124, "getsid"}, {125, "capget"}, {126, "capset"}, {127, "rt_sigpending"}, {128, "rt_sigtimedwait"}, {129, "rt_sigqueueinfo"}, {130, "rt_sigsuspend"}, {131, "sigaltstack", gem5::ignoreFunc}, {132, "utime"}, {133, "mknod", gem5::mknodFunc}, {134, "uselib"}, {135, "personality"}, {136, "ustat"}, {137, "statfs", statfsFuncgem5::X86Linux64}, {138, "fstatfs", fstatfsFuncgem5::X86Linux64}, {139, "sysfs"}, {140, "getpriority"}, {141, "setpriority", gem5::ignoreFunc}, {142, "sched_setparam"}, {143, "sched_getparam"}, {144, "sched_setscheduler"}, {145, "sched_getscheduler"}, {146, "sched_get_priority_max"}, {147, "sched_get_priority_min"}, {148, "sched_rr_get_interval"}, {149, "mlock"}, {150, "munlock"}, {151, "mlockall"}, {152, "munlockall"}, {153, "vhangup"}, {154, "modify_ldt"}, {155, "pivot_root"}, {156, "_sysctl"}, {157, "prctl", gem5::ignoreFunc}, {158, "arch_prctl", gem5::X86ISA::archPrctlFunc}, {159, "adjtimex"}, {160, "setrlimit", gem5::ignoreFunc}, {161, "chroot"}, {162, "sync"}, {163, "acct"}, {164, "settimeofday"}, {165, "mount"}, {166, "umount2"}, {167, "swapon"}, {168, "swapoff"}, {169, "reboot"}, {170, "sethostname"}, {171, "setdomainname"}, {172, "iopl"}, {173, "ioperm"}, {174, "create_module"}, {175, "init_module"}, {176, "delete_module"}, {177, "get_kernel_syms"}, {178, "query_module"}, {179, "quotactl"}, {180, "nfsservctl"}, {181, "getpmsg"}, {182, "putpmsg"}, {183, "afs_syscall"}, {184, "tuxcall"}, {185, "security"}, {186, "gettid", gem5::gettidFunc}, {187, "readahead"}, {188, "setxattr"}, {189, "lsetxattr"}, {190, "fsetxattr"}, {191, "getxattr"}, {192, "lgetxattr"}, {193, "fgetxattr"}, {194, "listxattr"}, {195, "llistxattr"}, {196, "flistxattr"}, {197, "removexattr"}, {198, "lremovexattr"}, {199, "fremovexattr"}, {200, "tkill"}, {201, "time", timeFuncgem5::X86Linux64}, {202, "futex", futexFuncgem5::X86Linux64}, {203, "sched_setaffinity", gem5::ignoreFunc}, {204, "sched_getaffinity", schedGetaffinityFuncgem5::X86Linux64}, {205, "set_thread_area"}, {206, "io_setup"}, {207, "io_destroy"}, {208, "io_getevents"}, {209, "io_submit"}, {210, "io_cancel"}, {211, "get_thread_area"}, {212, "lookup_dcookie"}, {213, "epoll_create"}, {214, "epoll_ctl_old"}, {215, "epoll_wait_old"}, {216, "remap_file_pages"}, {217, "getdents64", gem5::getdents64Func}, {218, "set_tid_address", gem5::setTidAddressFunc}, {219, "restart_syscall"}, {220, "semtimedop"}, {221, "fadvise64", gem5::ignoreFunc}, {222, "timer_create"}, {223, "timer_settime"}, {224, "timer_gettime"}, {225, "timer_getoverrun"}, {226, "timer_delete"}, {227, "clock_settime"}, {228, "clock_gettime", clock_gettimeFuncgem5::X86Linux64}, {229, "clock_getres", clock_getresFuncgem5::X86Linux64}, {230, "clock_nanosleep"}, {231, "exit_group", gem5::exitGroupFunc}, {232, "epoll_wait"}, {233, "epoll_ctl"}, {234, "tgkill", tgkillFuncgem5::X86Linux64}, {235, "utimes"}, {236, "vserver"}, {237, "mbind", gem5::ignoreFunc}, {238, "set_mempolicy"}, {239, "get_mempolicy", gem5::ignoreFunc}, {240, "mq_open"}, {241, "mq_unlink"}, {242, "mq_timedsend"}, {243, "mq_timedreceive"}, {244, "mq_notify"}, {245, "mq_getsetattr"}, {246, "kexec_load"}, {247, "waitid"}, {248, "add_key"}, {249, "request_key"}, {250, "keyctl"}, {251, "ioprio_set"}, {252, "ioprio_get"}, {253, "inotify_init"}, {254, "inotify_add_watch"}, {255, "inotify_rm_watch"}, {256, "migrate_pages"}, {257, "openat", openatFuncgem5::X86Linux64}, {258, "mkdirat"}, {259, "mknodat"}, {260, "fchownat"}, {261, "futimesat"}, {262, "newfstatat"}, {263, "unlinkat"}, {264, "renameat"}, {265, "linkat"}, {266, "symlinkat"}, {267, "readlinkat", gem5::readlinkFunc}, {268, "fchmodat"}, {269, "faccessat"}, {270, "pselect6"}, {271, "ppoll"}, {272, "unshare"}, {273, "set_robust_list", gem5::ignoreFunc}, {274, "get_robust_list"}, {275, "splice"}, {276, "tee"}, {277, "sync_file_range"}, {278, "vmsplice"}, {279, "move_pages"}, {280, "utimensat"}, {281, "epoll_pwait"}, {282, "signalfd"}, {283, "timerfd_create"}, {284, "eventfd", eventfdFuncgem5::X86Linux64}, {285, "fallocate", gem5::fallocateFunc}, {286, "timerfd_settime"}, {287, "timerfd_gettime"}, {288, "accept4"}, {289, "signalfd4"}, {290, "eventfd2", eventfdFuncgem5::X86Linux64}, {291, "epoll_create1"}, {292, "dup3"}, {293, "pipe2", gem5::pipe2Func}, {294, "inotify_init1"}, {295, "preadv"}, {296, "pwritev"}, {297, "rt_tgsigqueueinfo"}, {298, "perf_event_open"}, {299, "recvmmsg"}, {300, "fanotify_init"}, {301, "fanotify_mark"}, {302, "prlimit64", prlimitFuncgem5::X86Linux64}, {303, "name_to_handle_at"}, {304, "open_by_handle_at"}, {305, "clock_adjtime"}, {306, "syncfs"}, {307, "sendmmsg"}, {308, "setns"}, {309, "getcpu", gem5::getcpuFunc}, {310, "proess_vm_readv"}, {311, "proess_vm_writev"}, {312, "kcmp"}, {313, "finit_module"}, {314, "sched_setattr"}, {315, "sched_getattr"}, {316, "renameat2"}, {317, "seccomp"}, {318, "getrandom", }, {319, "memfd_create"}, {320, "kexec_file_load"}, {321, "bpf"}}' from '' to 'gem5::SyscallDescTablegem5::X86ISA::EmuLinux::SyscallABI64'
374 | };
| ^
| |
|
scons: *** [build/X86/arch/x86/linux/syscall_tbl64.o] Error 1
scons: building terminated because of errors.
*** Summary of Warnings ***
Warning: Deprecated namespaces are not supported by this compiler.
Please make sure to check the mailing list for deprecation announcements.
Warning: Couldn't find HDF5 C++ libraries. Disabling HDF5 support.

I'm not sure if the importing of getrandom function is correct or if you can point me to any resources that can help in integrating the getrandom function to gem5, that would be a great help.
Thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants