Bug 1160171

Summary: Failed to launch (symbol lookup error: undefined symbol: _ZN4YAML6detail9node_data12empty_scalarB5cxx11E)
Product: [openSUSE] openSUSE Tumbleweed Reporter: andy great <andythe_great>
Component: OtherAssignee: Dave Plater <davejplater>
Status: RESOLVED FIXED QA Contact: E-mail List <qa-bugs>
Severity: Normal    
Priority: P5 - None CC: alynx.zhou, andythe_great, dimstar, dleuenberger, knurpht, opensuse.lietuviu.kalba, sbrabec, stefan.bruens, tchvatal
Version: Current   
Target Milestone: ---   
Hardware: x86-64   
OS: Other   
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---
Attachments: libyaml-cpp/0.6.2_to_0.6.3/compat_report.html

Description andy great 2020-01-06 21:56:30 UTC
kakake@linux-gsde:~> blender
blender: symbol lookup error: /usr/lib64/libOpenColorIO.so.1: undefined symbol: _ZN4YAML6detail9node_data12empty_scalarB5cxx11E

Try executing Blender in terminal result in this message.

I did

sudo zypper clean
sudo zypper ref
sudo zypper rm -u blender
sudo zypper in blender

reboot

still same problem. 

The question was also ask here:
https://forums.opensuse.org/showthread.php/538693-Blender-failed-to-launch-after-update-symbol-lookup-error-undefine-symbol?p=2923840#post2923840

Blender 2.81-2.1-x86_64 from vendor openSUSE
Operating System: openSUSE Tumbleweed 20200103
KDE Plasma Version: 5.17.4
KDE Frameworks Version: 5.65.0
Qt Version: 5.13.1
Kernel Version: 5.3.12-2-default
OS Type: 64-bit
Processors: 8 × Intel® Core™ i7-3770 CPU @ 3.40GHz
Memory: 7.5 GiB of RAM
Comment 1 Gertjan Lettink 2020-01-06 22:45:16 UTC
Confirmed. Seeing exactly the same
Comment 2 Dave Plater 2020-01-07 05:58:15 UTC
With a recently updated Tumbleweed and blender-2.81-2.1 and 
libOpenColorIO1-1.1.1-1.6 my blender starts without a problem but if you updated blender individually and it didn't pull in the updated libOpenColorIO1 then I will ensure that blender pulls in the library it was built with.
Please confirm that updating libOpenColorIO1 fixes this problem.
Comment 3 andy great 2020-01-07 14:17:42 UTC
(In reply to Dave Plater from comment #2)
> With a recently updated Tumbleweed and blender-2.81-2.1 and 
> libOpenColorIO1-1.1.1-1.6 my blender starts without a problem but if you
> updated blender individually and it didn't pull in the updated
> libOpenColorIO1 then I will ensure that blender pulls in the library it was
> built with.
> Please confirm that updating libOpenColorIO1 fixes this problem.

Not sure how do I update libopencolorio further, I upgrade the system with sudo zypper dup, I did not update blender individually.

My current install is 
Information for package libOpenColorIO1:
----------------------------------------
Repository     : openSUSE-Tumbleweed-Oss                                                    
Name           : libOpenColorIO1                                                            
Version        : 1.1.1-1.6                                                                  
Arch           : x86_64                                                                     
Vendor         : openSUSE                                                                   
Installed Size : 1.0 MiB                                                                    
Installed      : Yes (automatically)                                                        
Status         : up-to-date                                                                 
Source package : OpenColorIO-1.1.1-1.6.src
Comment 4 Dave Plater 2020-01-08 06:14:21 UTC
I have an older snapshot and updating libyaml-cpp0_6 which used to export the missing symbol was older. I updated to the latest and now I can reproduce this bug. Possibly a build service problem, I will investigate and fix
Comment 5 Dave Plater 2020-01-08 06:18:54 UTC
Added yaml-cpp maintainer to cc list
Comment 6 Dave Plater 2020-01-08 06:36:20 UTC
Not quite sure where the problem lies, installing libOpenColorIO1 from graphics solves the problem but it is identical to Factory and has built and published. Must be some (Temporary?) problem between Factory and Tumbleweed.
Comment 7 Dominique Leuenberger 2020-01-08 09:01:31 UTC
(In reply to Dave Plater from comment #6)
> Not quite sure where the problem lies, installing libOpenColorIO1 from
> graphics solves the problem but it is identical to Factory and has built and
> published. Must be some (Temporary?) problem between Factory and Tumbleweed.

Seems a library changed ABI without bumping it's so-version.. shame on upstream; in this case I assume it was yaml-cpp.

for snapshot 0106, I triggered a bunch of rebuilds (like OpenImageIO) - which hopefully solve this issue.

If not, I'll have to trigger more rebuilds based on what all comes down the line of yaml-cpp.

Can you please test once 0106 is released? (should happen in the next couple hours)
Comment 8 Dave Plater 2020-01-08 11:10:47 UTC
Created sr#761813 to graphics/OpenColorIO to ensure that libOpenColorIO1 pulls in the version of libyaml-cpp0_6 it was built against.
Comment 9 andy great 2020-01-08 21:28:36 UTC
Latest update on TW fix the issue, Blender works now.
Comment 10 Stefan Brüns 2020-01-09 00:57:27 UTC
The requested symbol (YAML::detail::node_data::empty_scalar[abi:cxx11]()) was added in yaml-cpp-0.6.3, which does not break ABI, only removing it would.

Unfortunately, we have no ABI tracking in openSUSE, and the library versioning dependencies are only weak.

For Tumbleweed, we explicitly request people always use "zypper dup", but even that does not ensure a consistent system when using e.g. "zypper in foo" - some dependencies may be old, but are yet satisfied. Only "zypper in foo; zypper dup" is sufficient is most cases.
Comment 11 Dave Plater 2020-01-10 10:01:24 UTC
Created attachment 827308 [details]
libyaml-cpp/0.6.2_to_0.6.3/compat_report.html

(In reply to Stefan Brüns from comment #10)
> The requested symbol (YAML::detail::node_data::empty_scalar[abi:cxx11]())
> was added in yaml-cpp-0.6.3, which does not break ABI, only removing it
> would.
> 
> Unfortunately, we have no ABI tracking in openSUSE, and the library
> versioning dependencies are only weak.
> 
> For Tumbleweed, we explicitly request people always use "zypper dup", but
> even that does not ensure a consistent system when using e.g. "zypper in
> foo" - some dependencies may be old, but are yet satisfied. Only "zypper in
> foo; zypper dup" is sufficient is most cases.

What confuses me the most is after a slightly earlier zypper dup I had identical version and builds to the reporters of libOpenColorIO1 and blender but version 0.6.2 of libyaml-cpp0_6 which worked. I could only reproduce the bug by installing version 0.6.3 of libyaml-cpp0_6. If you look at the attached compat_report.html from abi-compliance-checker you will see that although the abi has only additions the api has 8 symbols added and 6 removed.
Anyway requiring the specific version of libyaml-cpp0_6 will prevent this until this is fixed.
Comment 12 Mindaugas Baranauskas 2020-02-18 09:08:44 UTC
This bug also affects Calamares. See 
https://github.com/calamares/calamares/issues/1312#issuecomment-587258287
Comment 13 Stanislav Brabec 2022-07-05 20:18:50 UTC
Please follow bug 1200624 to get more info.
Comment 16 Swamp Workflow Management 2022-08-03 13:17:03 UTC
SUSE-RU-2022:2640-1: An update that has four recommended fixes can now be installed.

Category: recommended (moderate)
Bug References: 1160171,1178331,1178332,1200624
CVE References: 
JIRA References: 
Sources used:
openSUSE Leap 15.4 (src):    yaml-cpp-0.6.3-150400.4.3.1
SUSE Linux Enterprise Module for Desktop Applications 15-SP4 (src):    yaml-cpp-0.6.3-150400.4.3.1
SUSE Linux Enterprise Module for Basesystem 15-SP4 (src):    yaml-cpp-0.6.3-150400.4.3.1

NOTE: This line indicates an update has been released for the listed product(s). At times this might be only a partial fix. If you have questions please reach out to maintenance coordination.