The function os_file_punch_hole() would return DB_IO_NO_PUNCH_HOLE if the underlying file system does not support the operation. This error code is silently transformed to DB_SUCCESS in IORequest::punch_hole().
MDEV-15528, a call to os_file_punch_hole() was added to fil_io() but the return value DB_IO_NO_PUNCH_HOLE is not being tolerated.
If the data directory resides in a file system that does not support the hole-punching, then the following test would crash:
An example of such a file system is encfs 1.9.5 set up on top of ext4 on Debian GNU/Linux.
Note: A file system that does not support hole-punching will make the use of page_compressed tables pointless. Maybe we should issue some error on CREATE TABLE already? But that is a separate bug.