summary refs log tree commit diff stats
path: root/results/classifier/deepseek-2-tmp/output/kernel/1887306
diff options
context:
space:
mode:
authorChristian Krinitsin <mail@krinitsin.com>2025-07-03 07:27:52 +0000
committerChristian Krinitsin <mail@krinitsin.com>2025-07-03 07:27:52 +0000
commitd0c85e36e4de67af628d54e9ab577cc3fad7796a (patch)
treef8f784b0f04343b90516a338d6df81df3a85dfa2 /results/classifier/deepseek-2-tmp/output/kernel/1887306
parent7f4364274750eb8cb39a3e7493132fca1c01232e (diff)
downloademulator-bug-study-d0c85e36e4de67af628d54e9ab577cc3fad7796a.tar.gz
emulator-bug-study-d0c85e36e4de67af628d54e9ab577cc3fad7796a.zip
add deepseek and gemma results
Diffstat (limited to 'results/classifier/deepseek-2-tmp/output/kernel/1887306')
-rw-r--r--results/classifier/deepseek-2-tmp/output/kernel/188730656
1 files changed, 0 insertions, 56 deletions
diff --git a/results/classifier/deepseek-2-tmp/output/kernel/1887306 b/results/classifier/deepseek-2-tmp/output/kernel/1887306
deleted file mode 100644
index 0ea9a50c..00000000
--- a/results/classifier/deepseek-2-tmp/output/kernel/1887306
+++ /dev/null
@@ -1,56 +0,0 @@
-
-qemu-user deadlocks when forked in a multithreaded process
-
-The following program (also attached) deadlocks when run under QEMU user on Linux. 
-
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <unistd.h>
-
-#define NUM_THREADS 100
-#define NUM_FORKS 10
-
-pthread_barrier_t barrier;
-
-void *t(void *arg) {
-    for (int i = 0; i < NUM_FORKS; i++) {
-        pid_t pid = fork();
-        if (pid < 0)
-            abort();
-        if (!pid)
-            _exit(0);
-        if (waitpid(pid, NULL, 0) < 0)
-            abort();
-    }
-    //pthread_barrier_wait(&barrier);
-    return NULL;
-}
-
-int main(void) {
-    pthread_barrier_init(&barrier, NULL, NUM_THREADS);
-    pthread_t ts[NUM_THREADS];
-    for (size_t i = 0; i < NUM_THREADS; i++) {
-        if (pthread_create(&ts[i], NULL, t, NULL))
-            abort();
-    }
-    for (size_t i = 0; i < NUM_THREADS; i++) {
-        pthread_join(ts[i], NULL);
-    }
-    printf("Done: %d\n", getpid());
-    return 0;
-}
-
-To reproduce:
-$ gcc test.c -pthread
-$ while qemu-x86_64 ./a.out; do :; done
-
-(Be careful, Ctrl-C/SIGINT doesn't kill the deadlocked child).
-
-Larger values of NUM_THREADS/NUM_FORKS lead to more often deadlocks. With the values above it often deadlocks on the first try on my machine. When it deadlocks, there is a child qemu process with two threads which is waited upon by one of the worker threads of the parent.
-
-I tried to avoid the deadlock by serializing fork() with a mutex, but it didn't help. However, ensuring that no thread exits until all forks are done (by adding a barrier to t()) does seem to help, at least, the program above could run for a half an hour until I terminated it.
-
-Tested on QEMU 5.0.0, 4.2.0 and 2.11.1, with x86_64 and AArch64 linux-user targets.
\ No newline at end of file