before you do any kind of boolean, make sure that you have only TWO operands. if you want to subtract many objects from one, perform a 'combine' (polygons-->combine) before you do the boolean. that helps ensure that you're subtracting one object from another. multiple objects just complicates things.
for example, say you have 7 cylinders you want to subtract from a cube. instead of doing 7 boolean subtracts, combine the 7 cylinders into one poly object (even though they're not all one object), delete your history on the newly made object, and THEN do your boolean. it should work.
Accept no substitutions.