OK, I think the OpenColorIO symbol lookup error was the missing link here (pun very much intended). I should mention that we don’t currently build OIIO against OCIO because static linkage won’t work without backporting some OCIO build changes from the 2.x development branch, so that would explain why I don’t encounter anything like this issue.
Nuke ships with its own OCIO library that uses a custom outer symbol namespace of FnOpenColorIO (which is what you’re seeing in your loader error), but the library name is not customized (it’s just libOpenColorIO.so). Because of this, the runtime OCIO requirement for your compiled libOpenImageIO.so is going to resolve to the libOpenColorIO.so that ships with Nuke. The smoking gun is that the OCIO library they ship in 12.x uses boost::shared_ptr, while Nuke 11.3 and prior used std::tr1::shared_ptr (and I’m guessing the OCIO build you’re using for OIIO does as well). This would explain where the symbol mismatch is coming from, and why the plugins work in 11.3. Thus, you’ll likely need to produce an alternate OCIO build (or at least configure and install a new set of headers and find a way to link against the libOpenColorIO.so that ships with Nuke) in order to build against 12.x. Hope this helps. -Nathan On Tue, Jun 30, 2020 at 8:04 PM Zac Coster <zac.cos...@rsp.com.au> wrote: Hi Larry, > > Many Thanks for taking a look! > > When i drop a Read Node down in Nuke. I get a red banner appear with the > below error after i try to read a .tx file > > Read1: ${tx_file_name}.tx: Read error: > /home/zacc/dev/junk/build_test/oiio/oiio-rb-2.2.3/oiio-RB-2.2.3/install/lib64/txReader.so:plugin > did not define txReader > > (*Not sure if this part is relevant) > If i then try to import txReader via the python scriptEditor, it returns. > > import txReader > # Result: Traceback (most recent call last): > File "<string>", line 1, in <module> > ImportError: dynamic module does not define init function (inittxReader) > > Interestingly if i try the same import, however without first creating a > read node, i actually get an OCIO symbol error. > > import txReader > # Result: Traceback (most recent call last): > File "<string>", line 1, in <module> > ImportError: > /home/zacc/dev/junk/build_test/oiio/oiio-rb-2.2.3/oiio-RB-2.2.3/install/lib64/libOpenImageIO.so.2.2.3: > undefined symbol: > _ZNK13FnOpenColorIO2v16Config12getProcessorERKNSt3tr110shared_ptrIKNS0_7ContextEEERKNS3_IKNS0_9TransformEEENS0_18TransformDirectionE > > Using C++Filt results in > FnOpenColorIO::v1::Config::getProcessor(std::tr1::shared_ptr<FnOpenColorIO::v1::Context > const> const&, std::tr1::shared_ptr<FnOpenColorIO::v1::Transform const> > const&, FnOpenColorIO::v1::TransformDirection) const > > (Strace results from forced plugin reload) > > I also see the below strace > if i try to forcefully load all of Nuke's plugins > import nuke > nuke.nodeTypes(True) > > open("/home/zacc/dev/junk/build_test/oiio/oiio-rb-2.2.3/oiio-RB-2.2.3/install/lib64/txWriter.so", > O_RDONLY|O_CLOEXEC) = 118 > read(118, > "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\242\0\0\0\0\0\0"..., > 832) = 832 > fstat(118, {st_mode=S_IFREG|0755, st_size=186872, ...}) = 0 > mmap(NULL, 2251928, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 118, > 0) = 0x7f88e758a000 > mprotect(0x7f88e75af000, 2093056, PROT_NONE) = 0 > mmap(0x7f88e77ae000, 8192, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 118, 0x24000) = 0x7f88e77ae000 > close(118) = 0 > mprotect(0x7f88e77ae000, 4096, PROT_READ) = 0 > openat(AT_FDCWD, "/sys/devices/system/cpu", > O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 118 > brk(NULL) = 0xcec3000 > brk(0xcee7000) = 0xcee7000 > getdents(118, /* 42 entries */, 32768) = 1248 > getdents(118, /* 0 entries */, 32768) = 0 > close(118) = 0 > sched_getaffinity(29347, 8, [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 > 18 19 20 21 22 23]) = 8 > futex(0x7f8a2c3f8678, FUTEX_WAKE_PRIVATE, 2147483647) = 0 > futex(0x7f8a2c3f8678, FUTEX_WAKE_PRIVATE, 2147483647) = 0 > --- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0xad8f6} --- > rt_sigaction(SIGSEGV, NULL, {0x451580, [ILL ABRT BUS FPE SEGV], > SA_RESTORER|SA_STACK|SA_SIGINFO, 0x7f8b4d7365f0}, 8) = 0 > prctl(PR_SET_DUMPABLE, 1) = 0 > gettid() = 29347 > socketpair(AF_LOCAL, SOCK_STREAM, 0, [118, 119]) = 0 > sendmsg(11, {msg_name(0)=NULL, > msg_iov(1)=[{"\v\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\366\330\n\0\0\0\0\0\0\0\0\0\0\0\0\0"..., > 1584}], msg_controllen=24, [{cmsg_len=20, cmsg_level=SOL_SOCKET, > cmsg_type=SCM_RIGHTS, [119]}], msg_flags=0}, 0) = 1584 > close(119) = 0 > read(118, "B", 1) = 1 > close(118) = 0 > rt_sigaction(SIGSEGV, {SIG_DFL, [SEGV], SA_RESTORER|SA_RESTART, > 0x7f8b4b6d03b0}, {0x451580, [ILL ABRT BUS FPE SEGV], > SA_RESTORER|SA_STACK|SA_SIGINFO, 0x7f8b4d7365f0}, 8) = 0 > gettid() = 29347 > tgkill(29347, 29347, SIGSEGV) = 0 > rt_sigreturn({mask=[]}) = 0 > --- SIGSEGV {si_signo=SIGSEGV, si_code=SI_TKILL, si_pid=29347, > si_uid=50242} --- > +++ killed by SIGSEGV +++ > Segmentation fault > > Apologies, i wish i knew more. This is what i have found so far. > > > > ------------------------------ > *From: *"Larry Gritz" <l...@larrygritz.com> > *To: *"oiio-dev" <oiio-dev@lists.openimageio.org> > *Sent: *Wednesday, 1 July, 2020 11:51:02 AM > *Subject: *Re: [Oiio-dev] Do the tx plugins support Nuke12+? > > Zac, what error message do you get, exactly? >
_______________________________________________ Oiio-dev mailing list Oiio-dev@lists.openimageio.org http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org