Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Harden the detection of broken makecontext: check that makecontext arguments can...
authormquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Mon, 8 Jan 2007 22:48:50 +0000 (22:48 +0000)
committermquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Mon, 8 Jan 2007 22:48:50 +0000 (22:48 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@3046 48e7efb5-ca39-0410-a469-dd3cf9ba447f

acmacro/context.m4
configure

index 17dff07..604457e 100644 (file)
@@ -136,10 +136,10 @@ ucontext_t uc_main;
 
 void child(void *arg)
 {
-    if (arg != (void *)12345)
+    if (arg != (void *)2147483648)
         exit(1);
     if (swapcontext(&uc_child, &uc_main) != 0)
-        exit(1);
+        exit(2);
 }
 
 int main(int argc, char *argv[])
@@ -149,28 +149,28 @@ int main(int argc, char *argv[])
 
     /* the default is that it fails */
     if ((fp = fopen("conftestval", "w")) == NULL)
-        exit(1);
+        exit(3);
     fprintf(fp, "no\n");
     fclose(fp);
 
     /* configure a child user-space context */
     if ((stack = malloc(64*1024)) == NULL)
-        exit(1);
+        exit(4);
     if (getcontext(&uc_child) != 0)
-        exit(1);
+        exit(5);
     uc_child.uc_link = NULL;
     uc_child.uc_stack.ss_sp = (char *)stack+(32*1024);
     uc_child.uc_stack.ss_size = 32*1024;
     uc_child.uc_stack.ss_flags = 0;
-    makecontext(&uc_child, child, 2, (void *)12345);
+    makecontext(&uc_child, child, 2, (void *)2147483648);
 
     /* switch into the user context */
     if (swapcontext(&uc_main, &uc_child) != 0)
-        exit(1);
+        exit(6);
 
     /* Fine, child came home */
     if ((fp = fopen("conftestval", "w")) == NULL)
-        exit(1);
+        exit(7);
     fprintf(fp, "yes\n");
     fclose(fp);
 
index 3b4e15c..71e9548 100755 (executable)
--- a/configure
+++ b/configure
@@ -23627,10 +23627,10 @@ ucontext_t uc_main;
 
 void child(void *arg)
 {
-    if (arg != (void *)12345)
+    if (arg != (void *)2147483648)
         exit(1);
     if (swapcontext(&uc_child, &uc_main) != 0)
-        exit(1);
+        exit(2);
 }
 
 int main(int argc, char *argv[])
@@ -23640,28 +23640,28 @@ int main(int argc, char *argv[])
 
     /* the default is that it fails */
     if ((fp = fopen("conftestval", "w")) == NULL)
-        exit(1);
+        exit(3);
     fprintf(fp, "no\n");
     fclose(fp);
 
     /* configure a child user-space context */
     if ((stack = malloc(64*1024)) == NULL)
-        exit(1);
+        exit(4);
     if (getcontext(&uc_child) != 0)
-        exit(1);
+        exit(5);
     uc_child.uc_link = NULL;
     uc_child.uc_stack.ss_sp = (char *)stack+(32*1024);
     uc_child.uc_stack.ss_size = 32*1024;
     uc_child.uc_stack.ss_flags = 0;
-    makecontext(&uc_child, child, 2, (void *)12345);
+    makecontext(&uc_child, child, 2, (void *)2147483648);
 
     /* switch into the user context */
     if (swapcontext(&uc_main, &uc_child) != 0)
-        exit(1);
+        exit(6);
 
     /* Fine, child came home */
     if ((fp = fopen("conftestval", "w")) == NULL)
-        exit(1);
+        exit(7);
     fprintf(fp, "yes\n");
     fclose(fp);