I have a fix for ya on this. I've reproduced failures in dropItems when stone is destroyed. It seems that putting a ghost roboport on tops of stone, or fighting and stone being destroyed, or running over stone in a tank can cause this to be called with no entity.
In the bottom of dropItems function add this one line - certainly no danger, and I assure you it will remove alot of random crashes, which tend to happen late game:
if count > 0 then
-- now we're forced to spill items
entity = entity or global.forces[player.force.name].roboport
if (entity.valid) then
entity.surface.spill_item_stack(entity.position, {name = name, count = count}, false, entity.force, false)
end
end
The only addition to that code is checking entity.valid. The only consequence is your tanks may get some stone in them.