#457 closed defect (fixed)
a 'DatCh' to 'SerTms' timeset makes TOL crash
Reported by: | imendez | Owned by: | Víctor de Buen Remiro |
---|---|---|---|
Priority: | highest | Milestone: | |
Component: | TimeSetAlgebra | Version: | head |
Severity: | blocker | Keywords: | |
Cc: |
Description (last modified by )
Hi, this code yields a TOL falling when I try to draw a table of 's2':
Serie s1 = SubSer(CalInd(WD(7),Diario),y2003m07d12,y2004m01d31);
Serie s2 = DatCh(s1,SerTms(s1),SumS);
The error message is:
Fatal Error in Wish
alloc: invalid block: 0395FF58: ef ef 1d
Regards.
Change History (6)
comment:1 Changed 18 years ago by
Owner: | changed from danirus to Víctor de Buen Remiro |
---|
comment:2 Changed 18 years ago by
Status: | new → assigned |
---|
comment:3 Changed 18 years ago by
bug_file_loc: | → http://cvs.tol-project.org/viewcvs.cgi/tol_tests/tol/Bugzilla/bug_000457 |
---|---|
Resolution: | → fixed |
Status: | assigned → closed |
Problem has been fixed in CVS
Good, it is the dilemma of always with the DatCh. When the initial date or the end does not belong to the dated one is necessary to move them for back or for ahead to a contiguous valid date. The chosen criterion a long time ago had been always to include most possible, that is to say, to delay the initial date and to advance the end to never lose data for this reason. The problem in this case is that the date previous to y2003m07d12 is TheBegin, since the dated one is in favor annotated inferiorly of y2003m07d13. The solution that I have given is to continue trying to include the maximum, but an infinite value is reached, then it is due to back down to the previous finite value. This is perfectly compatible the previous code and solves east concrete problem yet.
Mejor lo digo en castellano:
Bueno, es el dilema de siempre con el DatCh. Cuando la fecha inicial o la final no pertenecen al fechado hay que moverlas para atrás o para adelante a una fecha válida contigua. El criterio elegido hace tiempo había sido siempre abarcar lo más posible, es decir, retrasar la fecha inicial y avanzar la final para no perder datos nunca por este motivo. El problema en este caso es que la fecha anterior a y2003m07d12 es TheBegin, ya que el fechado está acotado inferiormente por y2003m07d13. La solución que he dado es seguir intentando abarcar el máximo, pero si se se alcanza un valor infinito, entonces se debe retroceder al anterior valor finito. Esto es perfectamente compatible con todo el código anterior y soluciona este problema concreto.
comment:6 Changed 13 years ago by
Description: | modified (diff) |
---|
La serie s1 tiene datos desde y2003m07d12 y el primero no cero es y2003m07d13.
El fechado SerTms incluye todas las fechas anteriores a y2003m07d12, es decir, de y2003m07d11 para atrás, pues se trata de datos desconocidos que no sabemos si son 0 o distinto de cero, pero que por congruencia tomaremos como no nulos.
El DatCh busca la primera fecha de tms anterior a y2003m07d12, que es y2003m07d11
y le asigna el SumS de los datos conocidos entre y2003m07d11 y y2003m07d12, lo cual
da cero.
Por otros motivos el SerTms no estaba funcionando bien lo cual se descubrió a raíz del test #1536 y al arreglarlo el código de este test empezó a dar falsa alarma de fallo y ha habido que cambiarlo.
We are working about this bug
Thanks to report it