Note: Non-manifold meshes are only supported if the non-manifold components are not at the intersection of the boolean operation.
face normals should be uniform across all surfaces
Tip: Before performing your boolean operation, view the normals on your mesh (Display > Polygons > Face Normals). If you want to produce predictable boolean results, the normals must be uniform. See Normals > Conform.