Why if I try to change state->normal I always get shadow(raytrace shadow) problem?

[img]http://www.puppet.cgtalk.ru/shadow_and_normal.jpg[/img]

1.On left image just normal lambert shader.
2.On center image I try to null state->normal before call mi_sample_light() and restore normal inside mi_sample_light()
It always happend if try to change original normal (for example for bump too).
3.On right image red faces away from light. if(mi_vector_dot(&state->normal_geom, &dir) < 0)
White line it's terminator.

I understand that it's just shadow but why it's not happend if I don't change normal?
For example maya's shaders avoid this problem but how?
How can I fix it?