Compositor Disabled Node Config -> SegFault #67358

Closed
opened 2019-07-21 02:58:40 +02:00 by Finn Bear · 27 comments

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: 06312c6d2d

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.
image.png

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 disabled-comp-node-sigsev.blend
  2. Drop in the Glare node between the combine HSV and the outputs
**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: `06312c6d2d` 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. ![image.png](https://archive.blender.org/developer/F7621217/image.png) 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 [disabled-comp-node-sigsev.blend](https://archive.blender.org/developer/F7621222/disabled-comp-node-sigsev.blend) 2) Drop in the Glare node between the combine HSV and the outputs
Author

Added subscriber: @finnb

Added subscriber: @finnb

#78099 was marked as duplicate of this issue

#78099 was marked as duplicate of this issue

Added subscriber: @capnm

Added subscriber: @capnm

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

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

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
(gdb) 
> Drop in the Glare node between the combine HSV and the outputs Only happens here if you leave the second `Render Result ` window open backtrace ``` 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 (gdb) ```
Brecht Van Lommel was assigned by Sebastian Parborg 2019-07-24 17:58:29 +02:00
Brecht Van Lommel removed their assignment 2019-07-24 18:03:53 +02:00
Jeroen Bakker was assigned by Brecht Van Lommel 2019-07-24 18:03:53 +02:00

Added subscribers: @Jeroen-Bakker, @brecht

Added subscribers: @Jeroen-Bakker, @brecht

@Jeroen-Bakker is the maintainer of the compositor.

@Jeroen-Bakker is the maintainer of the compositor.
Member

Added subscriber: @ZedDB

Added subscriber: @ZedDB
Member

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

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

I can confirm your findings @jbakker.

I can confirm your findings @jbakker.

Added subscriber: @georgK

Added subscriber: @georgK

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

Still present in 2.82 (sub 2), branch: master, commit date: 2019-11-27 20:26, hash: `4659fa5471` Also happens with active backdrop (closed render window).
Jeroen Bakker was unassigned by Dalai Felinto 2019-12-23 16:33:36 +01:00

Added subscriber: @iss

Added subscriber: @iss

Changed status from 'Confirmed' to: 'Needs User Info'

Changed status from 'Confirmed' to: 'Needs User Info'

I have re-triaged this report and can not reproduce it.
Can you please check if this is still an issue in latest build?
https://builder.blender.org/download/

I have re-triaged this report and can not reproduce it. Can you please check if this is still an issue in latest build? https://builder.blender.org/download/
Member

Added subscriber: @lichtwerk

Added subscriber: @lichtwerk
Member

Changed status from 'Needs User Info' to: 'Confirmed'

Changed status from 'Needs User Info' to: 'Confirmed'
Member

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)

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)

Added subscriber: @dfelinto

Added subscriber: @dfelinto

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

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

Added subscriber: @Sergey

Added subscriber: @Sergey

@Jeroen-Bakker, 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: P1459: Snippet for #67358

diff --git a/source/blender/compositor/intern/COM_NodeOperationBuilder.cpp b/source/blender/compositor/intern/COM_NodeOperationBuilder.cpp
index 5ce6ca34b34..53a6d115e97 100644
--- a/source/blender/compositor/intern/COM_NodeOperationBuilder.cpp
+++ b/source/blender/compositor/intern/COM_NodeOperationBuilder.cpp
@@ -98,10 +98,10 @@ void NodeOperationBuilder::convertToOperations(ExecutionSystem *system)
 
   add_operation_input_constants();
 
-  add_datatype_conversions();
-
   resolve_proxies();
 
+  add_datatype_conversions();
+
   determineResolutions();
 
   /* 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).

@Jeroen-Bakker, 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: [P1459: Snippet for #67358](https://archive.blender.org/developer/P1459.txt) ``` diff --git a/source/blender/compositor/intern/COM_NodeOperationBuilder.cpp b/source/blender/compositor/intern/COM_NodeOperationBuilder.cpp index 5ce6ca34b34..53a6d115e97 100644 --- a/source/blender/compositor/intern/COM_NodeOperationBuilder.cpp +++ b/source/blender/compositor/intern/COM_NodeOperationBuilder.cpp @@ -98,10 +98,10 @@ void NodeOperationBuilder::convertToOperations(ExecutionSystem *system) add_operation_input_constants(); - add_datatype_conversions(); - resolve_proxies(); + add_datatype_conversions(); + determineResolutions(); /* 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).
Member

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.

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.
Sergey Sharybin self-assigned this 2020-06-12 15:44:05 +02:00

This issue was referenced by 020b8e2c73

This issue was referenced by 020b8e2c73e6d7d05ccdd8f1ed0a22686bb12658

This issue was referenced by 16d09a5864

This issue was referenced by 16d09a5864069c3d84988ba300a4785457a531ab

Changed status from 'Confirmed' to: 'Resolved'

Changed status from 'Confirmed' to: 'Resolved'
Member

Added subscribers: @SachaGoedegebure, @Alaska

Added subscribers: @SachaGoedegebure, @Alaska
Member

Removed subscriber: @Alaska

Removed subscriber: @Alaska
Thomas Dinges added this to the 2.90 milestone 2023-02-08 16:27:56 +01:00
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset System
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Code Documentation
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Viewport & EEVEE
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Asset Browser Project
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Asset System
Module
Core
Module
Development Management
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Module
Viewport & EEVEE
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Severity
High
Severity
Low
Severity
Normal
Severity
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
12 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#67358
No description provided.