From f9a828d2f3b17b3b5b1351c52e9fc521b57a2776 Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Wed, 18 Jul 2012 12:03:25 -0700 Subject: [PATCH] refresh (create temporary patch) --- meta | 5 ++- patches/refresh-temp | 105 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+), 2 deletions(-) create mode 100644 patches/refresh-temp diff --git a/meta b/meta index f71cc59c..8ee9d98f 100644 --- a/meta +++ b/meta @@ -1,11 +1,12 @@ Version: 1 -Previous: f74bbedf54e7218a8b4f0e3891d61ba90b8790be -Head: 7400fb8d400b2ff9c5ec772f23332e426167037d +Previous: 8c4feee2616d9f22f09418e59977b823b848cbd1 +Head: 79f7e06928c979f6a2b5c4044e2cabd51ba4e1c5 Applied: transpose: 84e0beee0d2d3c217cd9703b9e438d25856cacb6 fork: 0744fbe2b19f7924faf0dce72349307cc445577e rstream-fork: edf0409ab2138bdaf8283fa19ef0d2560c723478 dbg: 7400fb8d400b2ff9c5ec772f23332e426167037d + refresh-temp: 79f7e06928c979f6a2b5c4044e2cabd51ba4e1c5 Unapplied: waitall-buggy: c49c6b56c55385774065f5aa2704078e6ae0ceb8 rs-1sge: 8ec392829399dec7ed5c608b8697a482e5faa2de diff --git a/patches/refresh-temp b/patches/refresh-temp new file mode 100644 index 00000000..a7e6a2ed --- /dev/null +++ b/patches/refresh-temp @@ -0,0 +1,105 @@ +Bottom: 1f4485c0b98410aa12e6f2832d81210b64ac5c0f +Top: bf38d805cecbb29ad4eeaf8fed937dbf9eeaa591 +Author: Sean Hefty +Date: 2012-07-18 12:03:25 -0700 + +Refresh of dbg + +--- + +diff --git a/src/preload.c b/src/preload.c +index f824af3..aa1939d 100644 +--- a/src/preload.c ++++ b/src/preload.c +@@ -48,6 +48,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -467,14 +468,17 @@ static int connect_fork(int socket, const struct sockaddr *addr, socklen_t addrl + uint32_t msg; + long flags; + ++ printf("connect_fork\n"); + fd = fd_getd(socket); + flags = real.fcntl(fd, F_GETFL); + real.fcntl(fd, F_SETFL, 0); + ret = real.connect(fd, addr, addrlen); ++ printf("connect_fork - real connect %d %s\n", ret, strerror(errno)); + if (ret) + return ret; + + ret = real.recv(fd, &msg, sizeof msg, MSG_PEEK); ++ printf("connect_fork - real recv %d msg %d\n", ret, msg); + if ((ret != sizeof msg) || msg) { + fd_store(socket, fd, fd_normal); + return 0; +@@ -482,6 +486,7 @@ static int connect_fork(int socket, const struct sockaddr *addr, socklen_t addrl + + real.fcntl(fd, F_SETFL, flags); + ret = transpose_socket(socket, fd_rsocket); ++ printf("connect_fork - transpose socket %d\n", ret); + if (ret < 0) + return ret; + +@@ -834,11 +839,15 @@ pid_t fork(void) + uint32_t msg; + + init_preload(); ++ printf("fork\n"); + pid = real.fork(); ++ printf("fork - pid %d fork_support %d last_accept %d \n", ++ pid, fork_support, last_accept); + if (pid || !fork_support || (last_accept < 0) || + (fd_get(last_accept, &sfd) != fd_fork)) + goto out; + ++ printf("fork - switching to rsocket\n"); + len = sizeof sin6; + ret = real.getsockname(sfd, (struct sockaddr *) &sin6, &len); + if (ret) +@@ -846,33 +855,42 @@ pid_t fork(void) + sin6.sin6_flowinfo = sin6.sin6_scope_id = 0; + memset(&sin6.sin6_addr, 0, sizeof sin6.sin6_addr); + ++ sem_unlink("/rsocket_fork"); + sem = sem_open("/rsocket_fork", O_CREAT | O_RDWR, + S_IRWXU | S_IRWXG, 1); ++ printf("fork - sem_open\n"); ++ printf("fork - sem value %d\n", sem_getvalue(sem, &ret)); + if (sem == SEM_FAILED) + goto out; + + lfd = rsocket(sin6.sin6_family, SOCK_STREAM, 0); ++ printf("fork - rsocket %d\n", lfd); + if (lfd < 0) + goto sclose; + + param = 1; + rsetsockopt(lfd, SOL_SOCKET, SO_REUSEADDR, ¶m, sizeof param); + ++ printf("fork - waiting for semaphore\n"); + sem_wait(sem); + ret = rbind(lfd, (struct sockaddr *) &sin6, sizeof sin6); ++ printf("fork - rbind %d\n", ret); + if (ret) + goto lclose; + + ret = rlisten(lfd, 1); ++ printf("fork - rlisten %d\n", ret); + if (ret) + goto lclose; + + msg = 0; + ret = real.write(sfd, &msg, sizeof msg); ++ printf("fork - real write %d\n", ret); + if (ret != sizeof msg) + goto lclose; + + dfd = raccept(lfd, NULL, NULL); ++ printf("fork - raccept %d\n", dfd); + if (dfd < 0) + goto lclose; -- 2.41.0