Page MenuHome

Blender 2.90.1 silently exits on opening older .blend file, although open in 2.79b + save and open that new one in 2.90.1 succeeds
Closed, ResolvedPublicBUG

Description

System Information
Operating system: Windows10PRO 64bit v2004 (May 2020)
Graphics card: -

Blender Version
Broken: 2.90.1 "stable release", same behaviour also on 2.90 and 2.91(alpha)
Worked: 2.79b, 2.83.6

Short description of error
Opening an older blend file (2.49) exits Blender 2.90.1, but succeeds in 2.79b.
It can be loaded in Blender 2.90.1 if it was saved again in 2.79b

I got this 3D model in a .blend file. When directly opening it Blender 2.90.1 (official release) exits sliently.
Then I opened that file in Blender 2.79b and saved it to another name; Opening that new file then works in Blender 2.90.1

expected behaviour:
although some blend files (even from that old version) open properly its not really surprising that older versions may not work anymore;
BUT: Blender should not silently exit; instead there should be a notification, that (or if possile why) the file cannot be loaded.
Especially for the future this is very important, cause when I now save all my assets as .blend files v 2.90.1 on a DVD,
I want to load them properly also in ten years without being required to convert them all! :)
Consitency of the file format should be the key, shouldn't it?

Exact steps for others to reproduce the error

  • Try to open black_head_b3d249_1_v5.blend in any 2.9x version of blender

Here a simplified file (geometry + textures removed and replaced by default cube) saved in 2.49:

Here the same file saved in 2.79 (fixed):

Event Timeline

Unknown Object (User) created this task.Sep 29 2020, 12:54 AM
Unknown Object (User) renamed this task from Blender 2.90.1 silently exits on opening older .blend file, although open in 2.79b + save and open that new one in 2.90 succeeds to Blender 2.90.1 silently exits on opening older .blend file, although open in 2.79b + save and open that new one in 2.90.1 succeeds.Sep 29 2020, 12:56 AM
Unknown Object (User) updated the task description. (Show Details)
Germano Cavalcante (mano-wii) changed the task status from Needs Triage to Confirmed.Oct 6 2020, 3:26 PM
Germano Cavalcante (mano-wii) updated the task description. (Show Details)
Germano Cavalcante (mano-wii) changed the subtype of this task from "Report" to "Bug".Oct 6 2020, 3:31 PM

I can confirm the crash on master (2.91.0):

>	blender.exe!BKE_idtype_id_foreach_cache(ID * id, void(*)(ID *, const IDCacheKey *, void * *, unsigned int, void *) function_callback, void * user_data) Line 492	C
 	blender.exe!direct_link_id(FileData * fd, Main * main, const int tag, ID * id, ID * id_old) Line 6428	C
 	blender.exe!read_libblock(FileData * fd, Main * main, BHead * bhead, const int tag, const bool placeholder_set_indirect_extern, ID * * r_id) Line 6792	C
 	blender.exe!blo_read_file_internal(FileData * fd, const unsigned char * filepath) Line 7289	C
 	blender.exe!BLO_read_from_file(const unsigned char * filepath, eBLOReadSkip skip_flags, ReportList * reports) Line 320	C
 	blender.exe!BKE_blendfile_read_ex(bContext * C, const unsigned char * filepath, const BlendFileReadParams * params, ReportList * reports, const bool startup_update_defaults, const unsigned char * startup_app_template) Line 443	C
 	blender.exe!BKE_blendfile_read(bContext * C, const unsigned char * filepath, const BlendFileReadParams * params, ReportList * reports) Line 466	C
 	blender.exe!WM_file_read(bContext * C, const unsigned char * filepath, ReportList * reports) Line 737	C
 	blender.exe!wm_open_mainfile__open(bContext * C, wmOperator * op) Line 2337	C
 	blender.exe!wm_handler_fileselect_do(bContext * C, ListBase * handlers, wmEventHandler_Op * handler, int val) Line 2307	C
 	blender.exe!wm_handlers_do_intern(bContext * C, wmEvent * event, ListBase * handlers) Line 2817	C
 	blender.exe!wm_handlers_do(bContext * C, wmEvent * event, ListBase * handlers) Line 2870	C
 	blender.exe!wm_event_do_handlers(bContext * C) Line 3294	C
 	blender.exe!WM_main(bContext * C) Line 485	C
 	blender.exe!main(int argc, const unsigned char * * UNUSED_argv_c) Line 524	C
 	[External Code]

@Jacques Lucke (JacquesLucke), is this something you worked on recently?

Old node trees had no name, which is why this is failing in new code (as it gets called before doversion can add a name to them). Afraid we'll have to hack a bit around that, although it is luckily not too much annoying.