There are a lot of complications here, but basically detecting negative obstacles is a perception problem (slam_gmapping) more so than a planning problem (move_base).
An issue with the lidar is that if nothing is there then it will not return something, and if it doesn't get registered into the scan then gmapping doesn't know it is an obstacle. If an obstacle isn't registered, the move_base plannerwill go right through it since it thinks it is empty space.
A possible solution that changes minimally what you run would be to somehow detect the negative obstacle, and add that into the laser scan you are passing into slam_gmapping. Otherwise, you might need to look into different perception algorithms if this is a main concern of yours.
Some interesting links:
https://answers.ros.org/question/3636...
https://journals.sagepub.com/doi/10.1...