We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
2 parents 7bfe656 + 0c76f27 commit 949b36eCopy full SHA for 949b36e
src/libfaketime.c
@@ -697,10 +697,21 @@ static void ft_shm_destroy(void)
697
*/
698
if (0 == ft_sem_open(sem_name, &ft_sem))
699
{
700
- ft_sem_unlink(&ft_sem);
+ // Only delete the semaphore (and shared memory) if we're the owner.
701
+ pid_t sem_owner_pid;
702
+ int num_matched = sscanf(sem_name, "/faketime_sem_%d", &sem_owner_pid);
703
+ if (num_matched != 1)
704
+ {
705
+ fprintf(stderr, "libfaketime: failed to parse semaphore owner pid from sem_name %s\n", sem_name);
706
+ exit(1);
707
+ }
708
+ if (getpid() == sem_owner_pid)
709
710
+ ft_sem_unlink(&ft_sem);
711
+ shm_unlink(shm_name);
712
+ unsetenv("FAKETIME_SHARED");
713
714
}
- shm_unlink(shm_name);
- unsetenv("FAKETIME_SHARED");
715
716
717
0 commit comments