Question about boolean operation in blender

First I got a bmesh, I create an EditMesh with it, then converted it into DerivedMesh. Then I pass it to NewBooleanDerivedMesh as parameter, but the result I got was not quite right.

Exactly what result in this problem?

before intersection

after intersection