Can some one tell me what could be the adverse effect of calling syscall(SYS_gettid) from Signal Handler? I know it is not in the safe functions list to be called from signal handler but I want to know reason behind it?
what is impact if i call syscall(SYS_gettid) from signal Handler?
1.3k views Asked by sandeep At
1
There are 1 answers
Related Questions in THREAD-SAFETY
- Multiple Processes, Multiple Processors, Single Priority Queue - Java Thread-Safe and Concurrency -
- Thread-safe lock-free min where both operands can change c++
- Atomic increment operation in C++?
- In Java, a currying function is thread-safe or not
- How can I make my flask + sqlite3 application threadsafe
- Thread task not exiting when atomic value changed
- Issues with Concurrent Execution and Synchronization in a Custom Java Caching Mechanism
- Why is SpringApplicationBuilder.run made as thread-safe?
- lua_continuation, lua_thread functions
- Virtual threads in Java with backwards compatibility
- AWS Go SDK V2: assuming different roles concurrently
- Why does my PyQt5 and Vispy application only update the GUI when adding sleep in QThread's loop?
- Different threads updating different attribute of the same object, will it work?
- How to avoid Duplicate Document Numbers for Invoice created through netsuite RESTAPI
- In Rust, how to create a globally shared singleton with `OnceLock`?
Related Questions in SYSTEM-CALLS
- seccomp_unotify can't catch syscall more than once
- Why do register arg values need to be re-assigned in NASM after an int 0x80 system call?
- How to use mmap iteratively to map data in small chunks from a large file
- I want to use toilet to modify hook_function
- Finding total RAM consumption of process, including swap
- Why is the write system call printing an incorrect number of characters?
- Why is fork() accepted in strace if the actual syscall is clone()?
- Why does sudo kill -15 on sh and docker-compose PIDs not stop Docker containers?
- How to know if a syscall returned an error?
- Why does the assembly after my sys_clone call affect the cloned process?
- Why does mov fail to set dynamic section sizes when used on a function using GCC
- undefined reference to `sys_getprocs' when getting number of processes in Xv6
- Hello World in assembly on x86-64 Windows vs. Linux with int 0x80 system call
- C semaphore and shared memory
- Nginx tries to read config file in one pread() and fails on specific AMI on Amazon
Related Questions in SIGNAL-HANDLING
- How to make parent and child processes send signals to eachother rather than sending signals to themselves?
- How to Raise/Handle Custom Signals in C?
- Handling SIGTERM in Parent Process on Fork Failure - Resource Cleanup Issue
- Custom signal handler that affects only subprocess or my own shell
- Equivalent pointer probe from MSVC to GCC in a library
- Is there any way I can stop my signal handler from resending the signal every 5 mins?
- How my signal handler is called if a signal occurs during pselect?
- Signal Handling on Windows and Linux
- question about handling signals using signal in C
- Not getting Stacktrace of Backtrace while Function crashed with SIGABRT in ARM using libunwind library
- How to delete shared memory when ctrl c?
- How to suspend a process just before it prints it's output in C?
- sigsuspend() with SIGINT and SIGCHLD
- How can waitpid() reap more than one child?
- Boost signal handler - calling default handler
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
I'm pretty sure this has to do with the Signal Handler methods being reentrant. Suppose a signal is sent, and your handler grabs the signal and starts processing. While processing, another signal may be sent by a concurrent program, and your handler again grabs that signal, and starts processing it.
Depending on how the scheduling works out, it's possible that the same chunk of code, the Signal Handler, executes during its own execution. The problem is that it uses the same pointers and variables, so it can corrupt itself, especially because gettid() returns the ID of the current thread. Which is the current thread in this case?