Once datafile is opened by Datafile::validate_for_recovery it then is trying to set the name.
Datafile::set_name in turn behave different depending on the type of the tablespace.
For file-per-table tablespaces it will invoke fil_path_to_space_name which expect filepath to look like ./dbname/table_name.ibd. The issue is that Datafile::set_name makes decision whether tablespace is file-per-table or genral depending on FSP flags stored on first page. During the recovery FSP flags could sometimes be unitialized. In this case fil_path_to_space_name will crash trying to parse file path which looks like './datafile.ibd'
Once datafile is opened by Datafile: :validate_ for_recovery it then is trying to set the name. to_space_ name which expect filepath to look like ./dbname/ table_name. ibd. The issue is that Datafile::set_name makes decision whether tablespace is file-per-table or genral depending on FSP flags stored on first page. During the recovery FSP flags could sometimes be unitialized. In this case fil_path_ to_space_ name will crash trying to parse file path which looks like './datafile.ibd'
Datafile::set_name in turn behave different depending on the type of the tablespace.
For file-per-table tablespaces it will invoke fil_path_