Hi,

I've just started having a problem with "cvs date -u" (version 1.12.11):


cvs diff: Diffing . Index: ChangeLog cvs diff: internal error: bad date 7 Apr 2005 11:50:26 -0000 =================================================================== RCS file: /work/abbotti/Repository/ampser/ChangeLog,v retrieving revision 1.66 *** glibc detected *** malloc(): memory corruption: 0x080eff60 *** cvs [diff aborted]: received abort signal


I think the memory corruption is a side effect of the "bad date", so I'm concentrating on that for now. I've traced the problem as far as the 'get_date' function, called from 'RCS_getrevtime'. 'get_date' returned 'false', so 'RCS_getrevtime' never got as far as filling in the 'date' string for its caller.


Some debugging info from gdb follows ....

Value of 'pc' prior to the call to 'yyparse':

(gdb) p pc
$39 = {input = 0xbfffebe0 "2005-4-7 GMT 11:36:56",
  day_ordinal = 1073837632, day_number = 1075498996,
  local_isdst = -1073747276, time_zone = -1073747304, meridian = 2,
  year = {value = 2005, digits = 4}, month = 4, day = 7, hour = 14,
  minutes = 57, seconds = {tv_sec = 7, tv_nsec = 273590000},
  rel_year = 0, rel_month = 0, rel_day = 0, rel_hour = 0,
  rel_minutes = 0, rel_seconds = 0, rel_ns = 0, timespec_seen = false,
  dates_seen = 0, days_seen = 0, local_zones_seen = 0, rels_seen = 0,
  times_seen = 0, zones_seen = 0, local_time_zone_table = {{
      name = 0x80e3fb8 "BST", type = 264, value = 1}, {
      name = 0x80e4a70 "GMT", type = 264, value = 0}, {
      name = 0x0, type = 0, value = 0}}}

Value of 'pc' after the call to 'yyparse':

(gdb) p pc
$40 = {input = 0xbfffebf6 "[EMAIL PROTECTED]@\uffff\uffff\032@(\uffff\uffff\uffffO\uffff\016@ [EMAIL PROTECTED]",
day_ordinal = 1073837632, day_number = 1075498996, local_isdst = 0,
time_zone = -1073747304, meridian = 2, year = {value = 2005,
digits = 4}, month = 4, day = 7, hour = 11, minutes = 36,
seconds = {tv_sec = 56, tv_nsec = 0}, rel_year = 0, rel_month = 0,
rel_day = 0, rel_hour = 0, rel_minutes = 0, rel_seconds = 0,
rel_ns = 0, timespec_seen = false, dates_seen = 1, days_seen = 0,
local_zones_seen = 1, rels_seen = 0, times_seen = 1, zones_seen = 0,
local_time_zone_table = {{
name = 0x80e3fb8 "BST", type = 264, value = 1}, {
name = 0x80e4a70 "GMT", type = 264, value = 0}, {
name = 0x0, type = 0, value = 0}}}


Values of 'Start', 'tm0' and 'tm' after the call to 'mktime':

(gdb) p Start
$46 = 1112873816
(gdb) p tm0
$47 = {tm_sec = 56, tm_min = 36, tm_hour = 11, tm_mday = 7, tm_mon = 3,
  tm_year = 105, tm_wday = 1075497952, tm_yday = 0, tm_isdst = 0,
  tm_gmtoff = 1075498996, tm_zone = 0x0}
(gdb) p tm
$48 = {tm_sec = 56, tm_min = 36, tm_hour = 12, tm_mday = 7, tm_mon = 3,
  tm_year = 105, tm_wday = 4, tm_yday = 96, tm_isdst = 1,
  tm_gmtoff = 3600, tm_zone = 0x80e3fb8 "BST"}

The following call to 'mktime_ok' returns 0 because tm_hour has changed. This causes 'get_time' to 'goto fail' and return 'false' because pc.zones_seen == 0.

Hopefully, there's enough info there for some bright spark to spot the problem, but let me know if you need more info.

Cheers,
Ian.

--
-=( Ian Abbott @ MEV Ltd.    E-mail: <[EMAIL PROTECTED]>        )=-
-=( Tel: +44 (0)161 477 1898   FAX: +44 (0)161 718 3587         )=-

_______________________________________________
Bug-cvs mailing list
Bug-cvs@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-cvs

Reply via email to