Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix bug and leak for msg_file_open
authorPierre Veyre <pierre.veyre@cc.in2p3.fr>
Thu, 20 Mar 2014 16:03:03 +0000 (17:03 +0100)
committerPierre Veyre <pierre.veyre@cc.in2p3.fr>
Thu, 20 Mar 2014 16:03:03 +0000 (17:03 +0100)
Repare tesh tests

examples/msg/io/storage.tesh
src/surf/storage_n11.cpp
src/surf/workstation_interface.cpp
teshsuite/msg/storage/storage_basic.tesh

index 5d5b935..e0e74b2 100644 (file)
@@ -1,6 +1,6 @@
 #! ./tesh
 
 #! ./tesh
 
-$ ${bindir:=.}/io/storage ${srcdir:=.}/examples/platforms/storage.xml "--log=root.fmt:> [%8.6r]%e(%i@%h)%e%m%n"
+$ ${bindir:=.}/io/storage ${srcdir:=.}/examples/platforms/storage.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:(null)@denise) *** Storage info on denise ***
 > [  0.000000] (1:(null)@denise) Storage name: Disk2, mount name: c:
 > [  0.000000] (1:(null)@denise) Total size: 536870912000 bytes
 > [  0.000000] (1:(null)@denise) *** Storage info on denise ***
 > [  0.000000] (1:(null)@denise) Storage name: Disk2, mount name: c:
 > [  0.000000] (1:(null)@denise) Total size: 536870912000 bytes
@@ -12,23 +12,23 @@ $ ${bindir:=.}/io/storage ${srcdir:=.}/examples/platforms/storage.xml "--log=roo
 > [  0.000000] (1:(null)@denise) Used size: 13221994 bytes
 > [  0.003333] (1:(null)@denise) Create a 200000 bytes file named '/home/tmp/data.txt' on /sd1
 > [  0.003333] (1:(null)@denise) File Descriptor information:
 > [  0.000000] (1:(null)@denise) Used size: 13221994 bytes
 > [  0.003333] (1:(null)@denise) Create a 200000 bytes file named '/home/tmp/data.txt' on /sd1
 > [  0.003333] (1:(null)@denise) File Descriptor information:
->              Full path: '/home/tmp/data.txt'
->              Size: 200000
->              Mount point: '/home'
->              Storage Id: 'Disk4'
->              Storage Type: 'single_SSD'
->              Content Type: 'txt_unix'
+>              Full path: '/home/tmp/data.txt'
+>              Size: 200000
+>              Mount point: '/home'
+>              Storage Id: 'Disk4'
+>              Storage Type: 'single_SSD'
+>              Content Type: 'txt_unix'
 > [  0.003333] (1:(null)@denise) Free size: 536857490006 bytes
 > [  0.003333] (1:(null)@denise) Used size: 13421994 bytes
 > [  0.004583] (1:(null)@denise) Read 200000 bytes on /home/tmp/data.txt
 > [  0.007917] (1:(null)@denise) Write 100000 bytes on /home/tmp/data.txt
 > [  0.007917] (1:(null)@denise) File Descriptor information:
 > [  0.003333] (1:(null)@denise) Free size: 536857490006 bytes
 > [  0.003333] (1:(null)@denise) Used size: 13421994 bytes
 > [  0.004583] (1:(null)@denise) Read 200000 bytes on /home/tmp/data.txt
 > [  0.007917] (1:(null)@denise) Write 100000 bytes on /home/tmp/data.txt
 > [  0.007917] (1:(null)@denise) File Descriptor information:
->              Full path: '/home/tmp/data.txt'
->              Size: 300000
->              Mount point: '/home'
->              Storage Id: 'Disk4'
->              Storage Type: 'single_SSD'
->              Content Type: 'txt_unix'
+>              Full path: '/home/tmp/data.txt'
+>              Size: 300000
+>              Mount point: '/home'
+>              Storage Id: 'Disk4'
+>              Storage Type: 'single_SSD'
+>              Content Type: 'txt_unix'
 > [  0.007917] (1:(null)@denise) *** Renaming '/tmp/data.txt' into '/tmp/simgrid.readme'
 > [  0.007917] (1:(null)@denise) *** Get/set data for storage element: Disk4 ***
 > [  0.007917] (1:(null)@denise) Get data: '(null)'
 > [  0.007917] (1:(null)@denise) *** Renaming '/tmp/data.txt' into '/tmp/simgrid.readme'
 > [  0.007917] (1:(null)@denise) *** Get/set data for storage element: Disk4 ***
 > [  0.007917] (1:(null)@denise) Get data: '(null)'
@@ -104,4 +104,3 @@ $ ${bindir:=.}/io/storage ${srcdir:=.}/examples/platforms/storage.xml "--log=roo
 > [  0.007917] (1:(null)@denise) /include/surf/simgrid_dtd.h size: 23583 bytes
 > [  0.007917] (1:(null)@denise) /bin/smpicc size: 918 bytes
 > [  0.007917] (0:@) Simulated time: 0.00791667
 > [  0.007917] (1:(null)@denise) /include/surf/simgrid_dtd.h size: 23583 bytes
 > [  0.007917] (1:(null)@denise) /bin/smpicc size: 918 bytes
 > [  0.007917] (0:@) Simulated time: 0.00791667
-
index e384fb8..2856220 100644 (file)
@@ -430,7 +430,7 @@ StorageActionPtr StorageN11::open(const char* mount, char* path)
 
   StorageActionPtr action = new StorageN11Action(getModel(), 0, getState() != SURF_RESOURCE_ON, this, OPEN);
   action->p_file = file;
 
   StorageActionPtr action = new StorageN11Action(getModel(), 0, getState() != SURF_RESOURCE_ON, this, OPEN);
   action->p_file = file;
-
+  free(path);
   return action;
 }
 
   return action;
 }
 
index ca42c31..8ff047a 100644 (file)
@@ -207,33 +207,35 @@ ActionPtr Workstation::open(const char* fullpath) {
   s_mount_t mnt;
   unsigned int cursor;
   size_t pos = 0;
   s_mount_t mnt;
   unsigned int cursor;
   size_t pos = 0;
-  char *path, *mount_name;
+  char *path, *mount_name, *file_mount_name;
+
 
   XBT_DEBUG("Search for storage name for '%s' on '%s'", fullpath, getName());
   xbt_dynar_foreach(p_storage,cursor,mnt)
   {
     XBT_DEBUG("See '%s'",mnt.name);
 
   XBT_DEBUG("Search for storage name for '%s' on '%s'", fullpath, getName());
   xbt_dynar_foreach(p_storage,cursor,mnt)
   {
     XBT_DEBUG("See '%s'",mnt.name);
-    char *file_mount_name = NULL;
-    file_mount_name = xbt_new(char,strlen(mnt.name)+1);
+
+    file_mount_name = (char *) xbt_malloc ((strlen(mnt.name)+1) * sizeof (char));
     strncpy(file_mount_name,fullpath,strlen(mnt.name));
     file_mount_name[strlen(mnt.name)] = '\0';
 
     if(!strcmp(file_mount_name,mnt.name) && strlen(mnt.name)>pos)
     {/* The current mount name is found in the full path and is bigger than the previous*/
     strncpy(file_mount_name,fullpath,strlen(mnt.name));
     file_mount_name[strlen(mnt.name)] = '\0';
 
     if(!strcmp(file_mount_name,mnt.name) && strlen(mnt.name)>pos)
     {/* The current mount name is found in the full path and is bigger than the previous*/
-       pos = strlen(mnt.name);
-       mount_name = mnt.name;
-       st = static_cast<StoragePtr>(mnt.storage);
+      pos = strlen(mnt.name);
+      mount_name = mnt.name;
+      st = static_cast<StoragePtr>(mnt.storage);
     }
     }
-    xbt_free(file_mount_name);
   }
   if(pos>0)
   { /* Mount point found, deduce path + file name from full path (full path = mount name + path + file name)*/
   }
   if(pos>0)
   { /* Mount point found, deduce path + file name from full path (full path = mount name + path + file name)*/
-       path = xbt_new(char, strlen(fullpath)-strlen(mount_name));
-       strncpy(path, fullpath+pos, strlen(fullpath)-strlen(mount_name)+1);
+       path = (char *) xbt_malloc ((strlen(fullpath)-strlen(mount_name)+1) * sizeof (char));
+       strncpy(path, fullpath+pos, strlen(fullpath)-strlen(mount_name));
+       path[strlen(fullpath)-strlen(mount_name)] = '\0';
   }
   else
     xbt_die("Can't find mount point for '%s' on '%s'", fullpath, getName());
 
   }
   else
     xbt_die("Can't find mount point for '%s' on '%s'", fullpath, getName());
 
+  free(file_mount_name);
   return st->open(mount_name, path);
 }
 
   return st->open(mount_name, path);
 }
 
index e9147a2..ade43d6 100644 (file)
@@ -1,60 +1,61 @@
-$ msg/storage/storage_basic --cfg=path:${srcdir:=.} ${srcdir:=.}/msg/storage/platform.xml ${srcdir:=.}/msg/storage/deployment.xml "--log=root.fmt:> > [%10.6r]%e(%i:%P@%h)%e%m%n"
-> [server:server:(1) 0.000000] > [storage/INFO] *** Storage info on server ***
-> [server:server:(1) 0.000000] > [storage/INFO]        Storage name: sdisk1, mount name: /sd1
-> [server:server:(1) 0.000000] > [storage/INFO]                Free size: 322122547160 bytes
-> [server:server:(1) 0.000000] > [storage/INFO]                Used size: 40 bytes
-> [server:server:(1) 0.000000] > [storage/INFO]        Properties of mounted storage: sdisk1
-> [server:server:(1) 0.000000] > [storage/INFO]                'usage' -> 'File system'
-> [server:server:(1) 0.000000] > [storage/INFO] *** Dump a storage element ***
-> [server:server:(1) 0.000000] > [storage/INFO] Print the content of the storage element: sdisk1
-> [server:server:(1) 0.000000] > [storage/INFO]        /doc/simgrid/examples/cxx/autoDestination/Master.cxx size: 10 bytes
-> [server:server:(1) 0.000000] > [storage/INFO]        /doc/simgrid/examples/cxx/basic/FinalizeTask.cxx size: 10 bytes
-> [server:server:(1) 0.000000] > [storage/INFO]        /doc/simgrid/examples/cxx/autoDestination/Forwarder.cxx size: 10 bytes
-> [server:server:(1) 0.000000] > [storage/INFO]        /doc/simgrid/examples/cxx/autoDestination/autoDestination_platform.xml size: 10 bytes
-> [server:server:(1) 0.000000] > [storage/INFO]        Storage name: sdisk2, mount name: /sd2
-> [server:server:(1) 0.000000] > [storage/INFO]                Free size: 805306367980 bytes
-> [server:server:(1) 0.000000] > [storage/INFO]                Used size: 20 bytes
-> [server:server:(1) 0.000000] > [storage/INFO]        Properties of mounted storage: sdisk2
-> [server:server:(1) 0.000000] > [storage/INFO]                'usage' -> 'Cache'
-> [server:server:(1) 0.000000] > [storage/INFO] *** Dump a storage element ***
-> [server:server:(1) 0.000000] > [storage/INFO] Print the content of the storage element: sdisk2
-> [server:server:(1) 0.000000] > [storage/INFO]        /doc/simgrid/examples/cxx/basic/Main.cxx size: 10 bytes
-> [server:server:(1) 0.000000] > [storage/INFO]        /doc/simgrid/examples/cxx/basic/Slave.cxx size: 10 bytes
-> [server:server:(1) 0.000000] > [storage/INFO] Server waiting for transfers ...
-> [client:client:(2) 0.005000] > [storage/INFO] client has read 500001 on /sd1/doc/simgrid/examples/cxx/autoDestination/FinalizeTask.cxx
-> [client:client:(2) 0.005000] > [storage/INFO] client sends 500001 to server
-> [server:server:(1) 0.026647] > [storage/INFO] 500001 bytes on 500001 bytes have been written by server on /sd1
-> [client:client:(2) 0.417980] > [storage/INFO] client has read 800000 on /sd1/doc/simgrid/examples/cxx/autoDestination/autoDestination_deployment.xml
-> [client:client:(2) 0.417980] > [storage/INFO] client sends 800000 to server
-> [server:server:(1) 0.452225] > [storage/INFO] 800000 bytes on 800000 bytes have been written by server on /sd1
-> [client:client:(2) 1.283559] > [storage/INFO] client has read 45800000 on /sd1/doc/simgrid/examples/cxx/autoDestination/Slave.cxx
-> [client:client:(2) 1.283559] > [storage/INFO] client sends 45800000 to server
-> [server:server:(1) 3.207494] > [storage/INFO] 45800000 bytes on 45800000 bytes have been written by server on /sd1
-> [client:client:(2) 3.208145] > [storage/INFO] *** GET/SET DATA for storage element: cdisk ***
-> [client:client:(2) 3.208145] > [storage/INFO] Get data: '(null)'
-> [client:client:(2) 3.208145] > [storage/INFO]        Set and get data: 'Some data'
-> [server:server:(1) 3.208145] > [storage/INFO] *** Storage info on server ***
-> [server:server:(1) 3.208145] > [storage/INFO]        Storage name: sdisk1, mount name: /sd1
-> [server:server:(1) 3.208145] > [storage/INFO]                Free size: 322122547160 bytes
-> [server:server:(1) 3.208145] > [storage/INFO]                Used size: 40 bytes
-> [server:server:(1) 3.208145] > [storage/INFO]        Properties of mounted storage: sdisk1
-> [server:server:(1) 3.208145] > [storage/INFO]                'usage' -> 'File system'
-> [server:server:(1) 3.208145] > [storage/INFO] *** Dump a storage element ***
-> [server:server:(1) 3.208145] > [storage/INFO] Print the content of the storage element: sdisk1
-> [server:server:(1) 3.208145] > [storage/INFO]        /doc/simgrid/examples/cxx/autoDestination/Master.cxx size: 10 bytes
-> [server:server:(1) 3.208145] > [storage/INFO]        /doc/simgrid/examples/cxx/basic/FinalizeTask.cxx size: 10 bytes
-> [server:server:(1) 3.208145] > [storage/INFO]        /doc/simgrid/examples/cxx/autoDestination/Forwarder.cxx size: 10 bytes
-> [server:server:(1) 3.208145] > [storage/INFO]        /doc/simgrid/examples/cxx/autoDestination/autoDestination_platform.xml size: 10 bytes
-> [server:server:(1) 3.208145] > [storage/INFO]        Storage name: sdisk2, mount name: /sd2
-> [server:server:(1) 3.208145] > [storage/INFO]                Free size: 805259267979 bytes
-> [server:server:(1) 3.208145] > [storage/INFO]                Used size: 47100021 bytes
-> [server:server:(1) 3.208145] > [storage/INFO]        Properties of mounted storage: sdisk2
-> [server:server:(1) 3.208145] > [storage/INFO]                'usage' -> 'Cache'
-> [server:server:(1) 3.208145] > [storage/INFO] *** Dump a storage element ***
-> [server:server:(1) 3.208145] > [storage/INFO] Print the content of the storage element: sdisk2
-> [server:server:(1) 3.208145] > [storage/INFO]        /scratch/titi.xml size: 800000 bytes
-> [server:server:(1) 3.208145] > [storage/INFO]        /scratch/tata.cxx size: 45800000 bytes
-> [server:server:(1) 3.208145] > [storage/INFO]        /doc/simgrid/examples/cxx/basic/Main.cxx size: 10 bytes
-> [server:server:(1) 3.208145] > [storage/INFO]        /scratch/toto.cxx size: 500001 bytes
-> [server:server:(1) 3.208145] > [storage/INFO]        /doc/simgrid/examples/cxx/basic/Slave.cxx size: 10 bytes
-> [3.208145] > [storage/INFO] Simulated time: 3.20814
+$ msg/storage/storage_basic ${srcdir:=.}/msg/storage/platform.xml ${srcdir:=.}/msg/storage/deployment.xml 0 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+> [  0.000000] (1:server@server) *** Storage info on server ***
+> [  0.000000] (1:server@server)       Storage name: sdisk1, mount name: /sd1
+> [  0.000000] (1:server@server)               Free size: 322122547160 bytes
+> [  0.000000] (1:server@server)               Used size: 40 bytes
+> [  0.000000] (1:server@server)       Properties of mounted storage: sdisk1
+> [  0.000000] (1:server@server)               'usage' -> 'File system'
+> [  0.000000] (1:server@server) *** Dump a storage element ***
+> [  0.000000] (1:server@server) Print the content of the storage element: sdisk1
+> [  0.000000] (1:server@server)       /doc/simgrid/examples/cxx/autoDestination/Master.cxx size: 10 bytes
+> [  0.000000] (1:server@server)       /doc/simgrid/examples/cxx/basic/FinalizeTask.cxx size: 10 bytes
+> [  0.000000] (1:server@server)       /doc/simgrid/examples/cxx/autoDestination/Forwarder.cxx size: 10 bytes
+> [  0.000000] (1:server@server)       /doc/simgrid/examples/cxx/autoDestination/autoDestination_platform.xml size: 10 bytes
+> [  0.000000] (1:server@server)       Storage name: sdisk2, mount name: /sd2
+> [  0.000000] (1:server@server)               Free size: 805306367980 bytes
+> [  0.000000] (1:server@server)               Used size: 20 bytes
+> [  0.000000] (1:server@server)       Properties of mounted storage: sdisk2
+> [  0.000000] (1:server@server)               'usage' -> 'Cache'
+> [  0.000000] (1:server@server) *** Dump a storage element ***
+> [  0.000000] (1:server@server) Print the content of the storage element: sdisk2
+> [  0.000000] (1:server@server)       /doc/simgrid/examples/cxx/basic/Main.cxx size: 10 bytes
+> [  0.000000] (1:server@server)       /doc/simgrid/examples/cxx/basic/Slave.cxx size: 10 bytes
+> [  0.000000] (1:server@server) Server waiting for transfers ...
+> [  0.005000] (2:client@client) client has read 500001 on /sd1/doc/simgrid/examples/cxx/autoDestination/FinalizeTask.cxx
+> [  0.005000] (2:client@client) client sends 500001 to server
+> [  0.026647] (1:server@server) 500001 bytes on 500001 bytes have been written by server on /sd1
+> [  0.417980] (2:client@client) client has read 800000 on /sd1/doc/simgrid/examples/cxx/autoDestination/autoDestination_deployment.xml
+> [  0.417980] (2:client@client) client sends 800000 to server
+> [  0.452225] (1:server@server) 800000 bytes on 800000 bytes have been written by server on /sd1
+> [  1.283559] (2:client@client) client has read 45800000 on /sd1/doc/simgrid/examples/cxx/autoDestination/Slave.cxx
+> [  1.283559] (2:client@client) client sends 45800000 to server
+> [  3.207494] (1:server@server) 45800000 bytes on 45800000 bytes have been written by server on /sd1
+> [  3.208145] (2:client@client) *** GET/SET DATA for storage element: cdisk ***
+> [  3.208145] (2:client@client) Get data: '(null)'
+> [  3.208145] (2:client@client)       Set and get data: 'Some data'
+> [  3.208145] (1:server@server) *** Storage info on server ***
+> [  3.208145] (1:server@server)       Storage name: sdisk1, mount name: /sd1
+> [  3.208145] (1:server@server)               Free size: 322122547160 bytes
+> [  3.208145] (1:server@server)               Used size: 40 bytes
+> [  3.208145] (1:server@server)       Properties of mounted storage: sdisk1
+> [  3.208145] (1:server@server)               'usage' -> 'File system'
+> [  3.208145] (1:server@server) *** Dump a storage element ***
+> [  3.208145] (1:server@server) Print the content of the storage element: sdisk1
+> [  3.208145] (1:server@server)       /doc/simgrid/examples/cxx/autoDestination/Master.cxx size: 10 bytes
+> [  3.208145] (1:server@server)       /doc/simgrid/examples/cxx/basic/FinalizeTask.cxx size: 10 bytes
+> [  3.208145] (1:server@server)       /doc/simgrid/examples/cxx/autoDestination/Forwarder.cxx size: 10 bytes
+> [  3.208145] (1:server@server)       /doc/simgrid/examples/cxx/autoDestination/autoDestination_platform.xml size: 10 bytes
+> [  3.208145] (1:server@server)       Storage name: sdisk2, mount name: /sd2
+> [  3.208145] (1:server@server)               Free size: 805259267979 bytes
+> [  3.208145] (1:server@server)               Used size: 47100021 bytes
+> [  3.208145] (1:server@server)       Properties of mounted storage: sdisk2
+> [  3.208145] (1:server@server)               'usage' -> 'Cache'
+> [  3.208145] (1:server@server) *** Dump a storage element ***
+> [  3.208145] (1:server@server) Print the content of the storage element: sdisk2
+> [  3.208145] (1:server@server)       /scratch/titi.xml size: 800000 bytes
+> [  3.208145] (1:server@server)       /scratch/tata.cxx size: 45800000 bytes
+> [  3.208145] (1:server@server)       /doc/simgrid/examples/cxx/basic/Main.cxx size: 10 bytes
+> [  3.208145] (1:server@server)       /scratch/toto.cxx size: 500001 bytes
+> [  3.208145] (1:server@server)       /doc/simgrid/examples/cxx/basic/Slave.cxx size: 10 bytes
+> [  3.208145] (0:@) Simulated time: 3.20814
+