close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 17 years ago

Closed 15 years ago

#546 closed defect (fixed)

Unexpected message of corrupted BBM file

Reported by: Víctor de Buen Remiro Owned by: Víctor de Buen Remiro
Priority: highest Milestone:
Component: Math Version: head
Severity: blocker Keywords:
Cc:

Description

I've detected that in very fast machines with multiple CPU's (core 2 duo), when you use massive calls to MatReadFile and MatWriteFile some BBM files could be corrupted.

Change History (8)

comment:1 Changed 16 years ago by Víctor de Buen Remiro

Resolution: worksforme
Status: newclosed

I cannot replicate this bug any more.

comment:2 Changed 15 years ago by Víctor de Buen Remiro

Resolution: worksforme
Status: closedreopened

Se ha presentado un nuevo caso tras compilar con Visual C++ 2008

ERROR: [6] [BBM_BinRead]Fichero BBM corrupto C:/Users/vdebuen/prj/tolp/trunk/tol_tests/tol/BSR/test_42/model/joint.1.bsr.mcmc.bbm
 Numero de filas:1801
 Numero de columnas:1390
 Bytes por int s_int :4
 Bytes por BDat s_BDat :8
 Tamaño esperado del fichero:20027128
 Tamaño real del fichero:19915928

comment:3 Changed 15 years ago by Víctor de Buen Remiro

El anterior mensaje surgió durante una simulación de una cadena MCMC en Windows 7 con caché de 10 filas que es precisamente la diferencia entre el tamaño esperado y el encontrado.

 (20027128-4*2)/1390*8 = 1801
 (19915928-4*2)/1390*8 = 1791

En la función BBM_BinAppend el fichero se abre inicialmente en modo rb:read only para leer las dimensiones que se encuentran al principio del fichero se cierra el mismo, luego se cierra y se reabre en modo r+b:Rewrite mode para sobreescribir las nuevas dimensiones, y finalmente se reabre en modo append write para añadir las nuevas filas.

Por alguna razón se abortó el proceso de concatenación BBM_BinAppend pues después de haber actualizado el número de filas no se llegaron a añadir al final del archivo.

Quizás convendría simplificar el mecanismo con una sola apertura usando las funciones de navegación interna e modo binario.

También habría que comprobar si alguna de las funciones de acceso al disco pudiera estar obsoleta.

comment:4 Changed 15 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: reopenedclosed

(In [2139]) Fixes #546

comment:5 Changed 15 years ago by Víctor de Buen Remiro

OIS también da a veces errores del mismo estilo al comprobar la integridad de los archivos.

ERROR: [1] OIS: 
OIS: Fallo en el test de integridad de tamaño de ficheros.
  .matrix parece estar corrupto pues ocupa 5219 Kb  en lugar de 5267

Tengo sospechas de que las funciones fopen, fclose, y demás no permiten en windows abrir para lectura mientras otro proceso está escribiendo. Por lo visto hay otras funciones para abrir de forma compartida y hay otras que les llaman seguras y que habrá que estudiar.

comment:6 Changed 15 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: closedreopened

comment:7 Changed 15 years ago by Víctor de Buen Remiro

(In [2189]) refs #546
New function CholeskiMinimumResidualsSolve

comment:8 Changed 15 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: reopenedclosed

(In [2199]) Fixes #546

Note: See TracTickets for help on using tickets.