A bug indeed. Our clue is the zic.c comment "Mark which rules to do in the current year" which zic is hellbent on doing even if they're duplicates. A start on a fix is the (tab munged) change below; it flags the case reported by Jon Skeet, and does not produce any false reports of errors for the files in the time zone package. It should pick up glitches other than exactly duplicated rules.
An unmunged version of the patch is attached.
--ado
1.1
2959 lines
1.3
2966 lines
*** /tmp/,azic.c 2015-07-19 14:29:15.286318600 -0400
--- /tmp/,bzic.c 2015-07-19 14:29:15.391324600 -0400
***************
*** 2372,2377 ****
--- 2372,2384 ----
jtime == max_time)
continue;
jtime = tadd(jtime, -offset);
+ if (jtime == ktime) {
+ eats(zp->z_filename, zp->z_linenum, rp->r_filename, rp->r_linenum);
+ warning(_("two rules for same instant"));
+ rp = &zp->z_rules[k];
+ eats(zp->z_filename, zp->z_linenum, rp->r_filename, rp->r_linenum);
+ error(_("two rules for same instant"));
+ }
if (k < 0 || jtime < ktime) {
k = j;
ktime = jtime;