Meteor exception in Meteor.flush when updating a collection breaks reactivity across clients

When I'm calling Collection.update from the front end (the method call is allowed), the update does work ok, but the exception below is being thrown (in Chrome's JS console, not in the server). Although the update took place, other clients connected to the same collection do not see the updates until they refresh the browser - I suspect because of the exception.

Any idea what might cause this?

Exception from Meteor.flush: Error: Can't create second landmark in same branch
    at Object.Spark.createLandmark (http://checkadoo.com/packages/spark/spark.js?8b4e0abcbf865e6ad778592160ec3b3401d7abd2:1085:13)
    at http://checkadoo.com/packages/templating/deftemplate.js?7f4bb363e9e340dbaaea8d74ac670af40ac82d0a:115:26
    at Object.Spark.labelBranch (http://checkadoo.com/packages/spark/spark.js?8b4e0abcbf865e6ad778592160ec3b3401d7abd2:1030:14)
    at Object.partial [as list_item] (http://checkadoo.com/packages/templating/deftemplate.js?7f4bb363e9e340dbaaea8d74ac670af40ac82d0a:114:24)
    at http://checkadoo.com/packages/handlebars/evaluate.js?ab265dbab665c32cfd7ec343166437f2e03f1a54:349:48
    at Object.Spark.labelBranch (http://checkadoo.com/packages/spark/spark.js?8b4e0abcbf865e6ad778592160ec3b3401d7abd2:1030:14)
    at branch (http://checkadoo.com/packages/handlebars/evaluate.js?ab265dbab665c32cfd7ec343166437f2e03f1a54:308:20)
    at http://checkadoo.com/packages/handlebars/evaluate.js?ab265dbab665c32cfd7ec343166437f2e03f1a54:348:20
    at Array.forEach (native)
    at Function._.each._.forEach (http://checkadoo.com/packages/underscore/underscore.js?772b2587aa2fa345fb760eff9ebe5acd97937243:76:11) 

EDIT 2

The error will also occur if the update call is run in the console. It happens on the first run of the update but by then reactivity is broken on any other browser attached to it.

EDIT Here is my template for the clickable item that triggers the update:

<template name="list_item">
  <li class="checklistitemli">
  <div class="{{checkbox_class}}" id="clitem_{{index}}">
    <input type="checkbox" name="item_checked" value="1" id="clcheck_{{index}}" class="checklist_item_check" {{checkbox_ticked}}> {{title}}
  </div>
  </li>
</template>

and here's the event handler for clicks on 'list_item':

Template.list_item.events = {
  'click .checklistitem' : function(ev) {
    this.checked = !this.checked; 
    var updateItem = {}; 
    updateItem['items.'+this.index+'.checked'] = this.checked; 
    console.log("The error happens here");
    Lists.update({_id: this._id}, {$set:updateItem}, {multi:false} , function(err) { 
      console.log("In callback, after the error"); 
    });
  }
}

The whole thing is available at http://checkadoo.com (Its a port of a Tornado based Python app of mine)

I've found this is usually an issue with duplicate ids. @Harel's question doesn't include the code that actually renders the collection so we can't tell the root cause of his problem but the repro that @Drew supplied in the comments is throwing this error because it is rendering an array of objects that have duplicate '_id' values.

I have put together a working version of @Drew's repro: https://github.com/alanning/meteor-buggy-fix

The key fix is to ensure the inserted drink items do not have duplicate '_id' fields:

  Template.drink_from_menu.events({
    'click .buy_drink': function () {
      var drink = {name: this.name, price: this.price};

      console.log("this = ", this);

      // using 'this' doesn't work because it already has a '_id' field and 
      // you would be trying to render multiple drinks with the same id
      // which causes Spark to throw the "Can't create second landmark 
      // in same branch" error
      //Tabs.update({_id:Session.get('tabId')}, {$push: {ordered_drinks: this}});

      // either ensure that the objects you want Spark to render have a 
      // unique id or leave off the _id completely and let Spark do it for you
      Tabs.update({_id:Session.get('tabId')}, {$push: {ordered_drinks: drink}});
    }
  });