Page MenuHome

Compositor Disabled Node Config -> SegFault
Closed, ResolvedPublicBUG


System Information
Operating system: Linux-4.15.0-50-generic-x86_64-with-debian-buster-sid 64 Bits
Graphics card: GeForce GTX 1080 Ti/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 410.104

Blender Version
Broken: version: Release Candidate 1 of 2.80 (sub 74), branch: master, commit date: 2019-07-11 13:50, hash: rB06312c6d2db8

Edit: I have reproduced this in RC2

Short description of error
A disabled Separate HSV node followed by a disabled Combine HSV node followed by another node causes a crash during editing and compositing. Dropping the glare node in between the combine HSV and the outputs triggers the crash. Rendering a similar scene also triggers a crash.

Edit: Reproducible with RGB node equivalents too

Exact steps for others to reproduce the error from scratch

  1. Create the node configuration above
  2. Drop in the Glare node between the combine HSV and the outputs

Exact steps for others to reproduce the error from file

  1. Open this file
  2. Drop in the Glare node between the combine HSV and the outputs

Event Timeline

Finn Bear (finnb) awarded a token.

Drop in the Glare node between the combine HSV and the outputs

Only happens here if you leave the second Render Result window open

Read blend: /tmp/x/disabled-comp-node-sigsev.blend
[New Thread 0x7fffa3ffe700 (LWP 23885)]
[Thread 0x7fffa3ffe700 (LWP 23885) exited]
[New Thread 0x7fffa3ffe700 (LWP 23910)]
[New Thread 0x7fffa47ff700 (LWP 23911)]
[New Thread 0x7fffa23ff700 (LWP 23912)]
[Thread 0x7fffa23ff700 (LWP 23912) exited]
[Thread 0x7fffa47ff700 (LWP 23911) exited]
[Thread 0x7fffa3ffe700 (LWP 23910) exited]
Read blend: /tmp/x/disabled-comp-node-sigsev.blend
[New Thread 0x7fffa3ffe700 (LWP 23923)]
[New Thread 0x7fffa23ff700 (LWP 23924)]
[New Thread 0x7fffa47ff700 (LWP 23925)]
[New Thread 0x7fffa1bfe700 (LWP 23926)]
*** stack smashing detected ***: <unknown> terminated
*** stack smashing detected ***: <unknown> terminated

Thread 26 "blender8tip" received signal SIGABRT, Aborted.
[Switching to Thread 0x7fffa1bfe700 (LWP 23926)]
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51	../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0  0x00007fffef748e97 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1  0x00007fffef74a801 in __GI_abort () at abort.c:79
#2  0x00007fffef793897 in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7fffef8c0988 "*** %s ***: %s terminated\n") at ../sysdeps/posix/libc_fatal.c:181
#3  0x00007fffef83ecd1 in __GI___fortify_fail_abort (need_backtrace=need_backtrace@entry=false, msg=msg@entry=0x7fffef8c0966 "stack smashing detected") at fortify_fail.c:33
#4  0x00007fffef83ec92 in __stack_chk_fail () at stack_chk_fail.c:29
#5  0x000055555737314f in ConvertValueToColorOperation::executePixelSampled(float*, float, float, PixelSampler) (this=<optimized out>, output=0x7fffa1bfd4c0, x=<optimized out>, y=<optimized out>, sampler=<optimized out>)
    at source/blender/compositor/operations/COM_ConvertOperation.cpp:57
#6  0x0000555557369eef in SocketReader::readSampled(float*, float, float, PixelSampler) (sampler=COM_PS_BILINEAR, y=<optimized out>, x=<optimized out>, result=0x7fffa1bfd4c0, this=<optimized out>)
    at source/blender/compositor/intern/COM_SocketReader.h:100
#7  0x0000555557369eef in TranslateOperation::executePixelSampled(float*, float, float, PixelSampler) (this=0x7fff00000000, output=0x7fffa1bfd4c0, x=<optimized out>, y=<optimized out>)
    at source/blender/compositor/operations/COM_TranslateOperation.cpp:59
#8  0x0000555557360844 in SocketReader::readSampled(float*, float, float, PixelSampler) (sampler=COM_PS_NEAREST, y=256, x=0, result=0x7fffa1bfd4c0, this=<optimized out>)
    at source/blender/compositor/intern/COM_SocketReader.h:100
#9  0x0000555557360844 in MixGlareOperation::executePixelSampled(float*, float, float, PixelSampler) (this=0x7fffb808e240, output=0x7fffa1bfd570, x=0, y=256, sampler=COM_PS_NEAREST)
    at source/blender/compositor/operations/COM_MixOperation.cpp:510
#10 0x0000555557358990 in SocketReader::readSampled(float*, float, float, PixelSampler) (sampler=COM_PS_NEAREST, y=256, x=0, result=0x7fffa1bfd570, this=<optimized out>)
    at source/blender/compositor/intern/COM_SocketReader.h:100
#11 0x0000555557358990 in CompositorOperation::executeRegion(rcti*, unsigned int) (this=0x7fffb8097140, rect=<optimized out>) at source/blender/compositor/operations/COM_CompositorOperation.cpp:199
#12 0x000055555732f45a in CPUDevice::execute(WorkPackage*) (this=<optimized out>, work=<optimized out>)
    at source/blender/compositor/intern/COM_CPUDevice.cpp:33
#13 0x000055555732cdfd in WorkScheduler::thread_execute_cpu(void*) (data=0x7fffb80426a0)
    at source/blender/compositor/intern/COM_WorkScheduler.cpp:81
#14 0x00007ffff4fdb6db in start_thread (arg=0x7fffa1bfe700) at pthread_create.c:463
#15 0x00007fffef82b88f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Sebastian Parborg (zeddb) lowered the priority of this task from 90 to 50.

When I close the separate render window before I drag and drop the glare node it won't fail. @Sebastian Parborg (zeddb) can you confirm this?

Still present in 2.82 (sub 2), branch: master, commit date: 2019-11-27 20:26, hash: rB4659fa547166
Also happens with active backdrop (closed render window).

Richard Antalik (ISS) changed the task status from Confirmed to Needs Information from User.Feb 5 2020, 4:14 PM

I have re-triaged this report and can not reproduce it.
Can you please check if this is still an issue in latest build?

Philipp Oeser (lichtwerk) changed the task status from Needs Information from User to Confirmed.Feb 5 2020, 5:34 PM
Philipp Oeser (lichtwerk) edited projects, added Compositing; removed Tracker Curfew.
Philipp Oeser (lichtwerk) changed the subtype of this task from "Report" to "Bug".

Can still confirm if the Render Result is shown anywhere (doesnt have to be a separate window, you can also change the 3DView to an image Editor with the Render Result showing)

Confirmed reports should always be tagged to a module, otherwise they don't show up in the queries and workboards.

@Jeroen Bakker (jbakker), there is something wrong is going on with data conversions when there are are two adjacent proxies with different types on their sockets. You can see this from graphviz debug output (you'd have to make it stored in a CWD rather than in temp directory since temp directory is deleted on crash).

The simplest solution which seems to work is to resolve proxies first, and then add data type conversion nodes:

1diff --git a/source/blender/compositor/intern/COM_NodeOperationBuilder.cpp b/source/blender/compositor/intern/COM_NodeOperationBuilder.cpp
2index 5ce6ca34b34..53a6d115e97 100644
3--- a/source/blender/compositor/intern/COM_NodeOperationBuilder.cpp
4+++ b/source/blender/compositor/intern/COM_NodeOperationBuilder.cpp
5@@ -98,10 +98,10 @@ void NodeOperationBuilder::convertToOperations(ExecutionSystem *system)
7 add_operation_input_constants();
9- add_datatype_conversions();
11 resolve_proxies();
13+ add_datatype_conversions();
15 determineResolutions();
17 /* surround complex ops with read/write buffer */

Not yet sure if it's a fix of a symptom (and there are some deeper wrong logic), or is it something proper to do (It kind of makes sense to not bother with conversion nodes if the node will be deleted anyway).

When a node is muted it is replaced by a proxy add_proxies_mute

resolve_proxies isn't dependent to the add_datatype_conversions so logically the proposed fix doesn't harm. resolve_proxies removes connected proxies that might hide the issue. But agree that this points to a deeper issue.

Functional it makes sense to do resolving before data conversions as the conversion is part of the node that is proxied. So it looks ok to commit. In future implementation I would expect the proxies to go away and and replaced by the generic node system evaluation we have.