Page MenuHome

compositor can not open this specific exr
Closed, ResolvedPublic

Description

System Information
Operating system: Windows-7-6.1.7601-SP1 64 Bits
Graphics card: GeForce GTX 970/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 436.48

Blender Version
Broken: version: 2.81 (sub 15), branch: master, commit date: 2019-10-12 15:33, hash: rB95f020c853d6
Worked: 2.79

Short description of error
I can't open this multilayer EXR file in the Compositor.
The image is 3000x3000px rendered in Cycles.

The file is big, so I had to compress it, please download it from this link:
https://www.dropbox.com/s/v6shqomrx3mqjr6/wip_191020_v01.zip?dl=0

thank you.

Event Timeline

Philipp Oeser (lichtwerk) lowered the priority of this task from Needs Triage by Developer to Needs Information from User.Oct 21 2019, 11:46 AM

Hm, seems to be working fine here:


What happens exactly? does it crash? just wont open? hang?
Just a stab in the dark: have you checked with Factory Settings and/or a fresh build?
[ looks awesome btw. :) ]

Thanks!
mmm, I get an X in the middle of the preview.

Philipp Oeser (lichtwerk) raised the priority of this task from Needs Information from User to Waiting for Developer to Reproduce.Oct 21 2019, 12:23 PM

On Windows with 2.80 system console says: IMB_loadifffile: couldn't get mapping C:\Users\Nathan\Downloads\wip_191020_v01.exr. I am guessing the same happens for @Massimiliano Puliero (mmaaxx) . See Window > Toggle System Console.

Not getting this on linux.
Since mmap seems to be in use here, not sure if this is related? https://stackoverflow.com/questions/2136527/how-portable-is-mmap

Probably it's crossing some kind of 2GB limit.

This might work (need to test on Windows):

diff --git a/intern/guardedalloc/intern/mmap_win.c b/intern/guardedalloc/intern/mmap_win.c
index 5b0c4b6614a..ff4fa4ae886 100644
--- a/intern/guardedalloc/intern/mmap_win.c
+++ b/intern/guardedalloc/intern/mmap_win.c
@@ -125,8 +125,10 @@ void *mmap(void *UNUSED(start), size_t len, int prot, int flags, int fd, off_t o
     }
   }

-  /* note len is passed to a 32 bit DWORD, so can't be > 4 GB */
-  maphandle = CreateFileMapping(fhandle, NULL, prot_flags, 0, len, NULL);
+  /* Split 64 bit size into low and high bits. */
+  DWORD len_bits_high = len >> 32;
+  DWORD len_bits_low = len & 0xFFFFFFFF;
+  maphandle = CreateFileMapping(fhandle, NULL, prot_flags, len_bits_high, len_bits_low, NULL);
   if (maphandle == 0) {
     errno = EBADF;
     return MAP_FAILED;
Brecht Van Lommel (brecht) lowered the priority of this task from Waiting for Developer to Reproduce to Confirmed, Medium.Wed, Nov 6, 4:38 PM