NatronGitHub / Natron

Open-source video compositing software. Node-graph based. Similar in functionalities to Adobe After Effects and Nuke by The Foundry.
http://NatronGitHub.github.io
GNU General Public License v2.0
4.56k stars 333 forks source link

What is the right version for boost? #824

Closed a01163125 closed 2 years ago

a01163125 commented 2 years ago

The problem originate from loat a ntp file. I am using Natron 2.4 or 2.5. My question is

  1. Is this bug caused simply by the higher version of boost(1.79)?
  2. How can I debug further?
  3. Is this bug may be caused a head of I see?

Program crashed at ar& ::boost::serialization::make_nvp("AdditionalFormats", _additionalFormats);

Then I used F11 to run into the codes and found this actually ends at ar& ::boost::serialization::make_nvp("Left", x1); in \Engine\RectISerialization.h

OUTPUT

Exception thrown at 0x00007FFBF5014FD9 in Engine.exe: Microsoft C++ exception: boost::archive::archive_exception at memory location 0x000000CCA8F5B9F0.
Exception thrown at 0x00007FFBF5014FD9 in Engine.exe: Microsoft C++ exception: std::runtime_error at memory location 0x000000CCA8F5E230.
Exception thrown at 0x00007FFBF5014FD9 in Engine.exe: Microsoft C++ exception: std::invalid_argument at memory location 0x000000CCA8F5EE78.

I heard that some kind of this error just show in some high version of boost while work fine with lower version like 1.59. So I tried to replace 1.79 with 1.58, 78 LINK 1120 errors came out. Then I rolled back.

My codes are like down below(As you can see, my codes may be a little incomplete to the official so this imcompleteness may cause the error.). I am happy to supply more files when necessary.

#pragma once

//#ifndef Engine_RectISerialization_h
//#define Engine_RectISerialization_h
//
// // ***** BEGIN PYTHON BLOCK *****
// // from <https://docs.python.org/3/c-api/intro.html#include-files>:
// // "Since Python may define some pre-processor definitions which affect the standard headers on some systems, you must include Python.h before any standard headers are included."
//#include <Python.h>
//// ***** END PYTHON BLOCK *****
//
//#include "Global/Macros.h"

#include "RectI.h"

//#if !defined(Q_MOC_RUN) && !defined(SBK_RUN)
//GCC_DIAG_UNUSED_LOCAL_TYPEDEFS_OFF
//GCC_DIAG_OFF(unused - parameter)
//// /opt/local/include/boost/serialization/smart_cast.hpp:254:25: warning: unused parameter 'u' [-Wunused-parameter]
//#include <boost/archive/xml_iarchive.hpp>
//#include <boost/archive/xml_oarchive.hpp>
//GCC_DIAG_UNUSED_LOCAL_TYPEDEFS_ON
//GCC_DIAG_ON(unused - parameter)
//#endif
//
//#include "Engine/EngineFwd.h"

NATRON_NAMESPACE_ENTER

template<class Archive>
void
RectI::serialize(Archive& ar,
    const unsigned int version)
{
    Q_UNUSED(version);
    ar& ::boost::serialization::make_nvp("Left", x1);
    ar& ::boost::serialization::make_nvp("Bottom", y1);
    ar& ::boost::serialization::make_nvp("Right", x2);
    ar& ::boost::serialization::make_nvp("Top", y2);
}

NATRON_NAMESPACE_EXIT

BOOST_SERIALIZATION_ASSUME_ABSTRACT(NATRON_NAMESPACE::RectI);

//#endif // Engine_RectISerialization_h

(PARTIAL)

    <AdditionalFormats class_id="13" tracking_level="0" version="0">
        <count>1</count>
        <item_version>3</item_version>
        <item class_id="14" tracking_level="0" version="3">
            <RectI class_id="15" tracking_level="0" version="0">
                <Left>0</Left>
                <Bottom>0</Bottom>
                <Right>224</Right>
                <Top>224</Top>
            </RectI>
            <Pixel_aspect_ratio>1.00000000000000000e+000</Pixel_aspect_ratio>
            <Name></Name>
        </item>
    </AdditionalFormats>

ERROR INFO:

Non UTF-8 arg: D:\Users\Ted\Source\Repos\Natron-51\Engine\x64\debug\Engine.exe
UTF-8 arg: D:\Users\Ted\Source\Repos\Natron-51\Engine\x64\debug\Engine.exe
Non UTF-8 arg: D:\ted\test.ntp
UTF-8 arg: D:\ted\test.ntp
args:
"D:\\ted\\test.ntp"
* Command-line parsing results:
clearCacheOnLaunch: false
clearOpenFXCacheOnLaunch: false
useDefaultSettings: false
isBackground: true
isInterpreterMode: false
enableRenderStats: false
exportDocsPath: ""
ipcPipe: ""
defaultOnProjectLoadedScript: ""
settingCommands:
pythonCommands:
writers:
readers:
atLeastOneOutput: false
filename: "D:/ted/test.ntp"
rangeSet: false
frameRanges:
* End of command-line parsing results.
QObject::connect: No such signal QObject::s_requestOFXDialogOnMainThread(OfxImageEffectInstance*, void*) in D:\Users\Ted\Source\Repos\Natron-51\Engine\AppManager.cpp:265
Filesystem:  "C:/"  =  "C:/"
Filesystem:  "D:/"  =  "D:/"
Non UTF-8 arg: D:\Users\Ted\Source\Repos\Natron-51\Engine\x64\debug\Engine.exe
UTF-8 arg: D:\Users\Ted\Source\Repos\Natron-51\Engine\x64\debug\Engine.exe
Non UTF-8 arg: D:\ted\test.ntp
UTF-8 arg: D:\ted\test.ntp
argv[0] = D:\Users\Ted\Source\Repos\Natron-51\Engine\x64\debug\Engine.exe
argv[1] = D:\ted\test.ntp
Failed to load OpenGL.
Natron requires at least OpenGL 2.0 with the following extensions so the viewer works appropriately:
GL_ARB_vertex_buffer_object,GL_ARB_pixel_buffer_object
To fix this: Re-start the installer, select "Package manager" and then install the "Software OpenGL" component.
If you don't have the installer you can manually copy opengl32.dll located in the "bin\mesa" directory of your Natron installation to the "bin" directory.
Available OpenGL renderers:
Vendor: NVIDIA Corporation
Renderer: GeForce GTX 750/PCIe/SSE2
OpenGL Version: 4.6.0 NVIDIA 456.71
GLSL Version: 4.60 NVIDIA

Fontconfig configuration file D:/Users/Ted/Source/Repos/Natron-51/Engine/x64/debug/../Resources/etc/fonts does not exist, not setting FONTCONFIG_PATH
QObject::connect: No such signal QObject::doEndChangesOnMainThread() in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5062
QObject::connect: No such signal QObject::doEvaluateOnMainThread(bool, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5063
QObject::connect: No such signal QObject::doValueChangeOnMainThread(KnobI*, int, double, ViewSpec, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5065
Restoring the image cache...
Loading plugin cache...
QObject::connect: No such signal QObject::doEndChangesOnMainThread() in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5062
QObject::connect: No such signal QObject::doEvaluateOnMainThread(bool, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5063
QObject::connect: No such signal QObject::doValueChangeOnMainThread(KnobI*, int, double, ViewSpec, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5065
QObject::connect: No such signal QObject::doEndChangesOnMainThread() in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5062
QObject::connect: No such signal QObject::doEvaluateOnMainThread(bool, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5063
QObject::connect: No such signal QObject::doValueChangeOnMainThread(KnobI*, int, double, ViewSpec, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5065
QObject::connect: No such signal QObject::doEndChangesOnMainThread() in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5062
QObject::connect: No such signal QObject::doEvaluateOnMainThread(bool, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5063
QObject::connect: No such signal QObject::doValueChangeOnMainThread(KnobI*, int, double, ViewSpec, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5065
QObject::connect: No such signal QObject::doEndChangesOnMainThread() in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5062
QObject::connect: No such signal QObject::doEvaluateOnMainThread(bool, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5063
QObject::connect: No such signal QObject::doValueChangeOnMainThread(KnobI*, int, double, ViewSpec, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5065
QObject::connect: No such signal QObject::doEndChangesOnMainThread() in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5062
QObject::connect: No such signal QObject::doEvaluateOnMainThread(bool, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5063
QObject::connect: No such signal QObject::doValueChangeOnMainThread(KnobI*, int, double, ViewSpec, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5065
QObject::connect: No such signal QObject::doEndChangesOnMainThread() in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5062
QObject::connect: No such signal QObject::doEvaluateOnMainThread(bool, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5063
QObject::connect: No such signal QObject::doValueChangeOnMainThread(KnobI*, int, double, ViewSpec, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5065
QObject::connect: No such signal QObject::doEndChangesOnMainThread() in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5062
QObject::connect: No such signal QObject::doEvaluateOnMainThread(bool, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5063
QObject::connect: No such signal QObject::doValueChangeOnMainThread(KnobI*, int, double, ViewSpec, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5065
QObject::connect: No such signal QObject::doEndChangesOnMainThread() in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5062
QObject::connect: No such signal QObject::doEvaluateOnMainThread(bool, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5063
QObject::connect: No such signal QObject::doValueChangeOnMainThread(KnobI*, int, double, ViewSpec, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5065
QObject::connect: No such signal QObject::doEndChangesOnMainThread() in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5062
QObject::connect: No such signal QObject::doEvaluateOnMainThread(bool, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5063
QObject::connect: No such signal QObject::doValueChangeOnMainThread(KnobI*, int, double, ViewSpec, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5065
QObject::connect: No such signal QObject::doEndChangesOnMainThread() in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5062
QObject::connect: No such signal QObject::doEvaluateOnMainThread(bool, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5063
QObject::connect: No such signal QObject::doValueChangeOnMainThread(KnobI*, int, double, ViewSpec, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5065
QObject::connect: No such signal QObject::doEndChangesOnMainThread() in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5062
QObject::connect: No such signal QObject::doEvaluateOnMainThread(bool, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5063
QObject::connect: No such signal QObject::doValueChangeOnMainThread(KnobI*, int, double, ViewSpec, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5065
QObject::connect: No such signal QObject::doEndChangesOnMainThread() in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5062
QObject::connect: No such signal QObject::doEvaluateOnMainThread(bool, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5063
QObject::connect: No such signal QObject::doValueChangeOnMainThread(KnobI*, int, double, ViewSpec, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5065
QObject::connect: No such signal QObject::doEndChangesOnMainThread() in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5062
QObject::connect: No such signal QObject::doEvaluateOnMainThread(bool, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5063
QObject::connect: No such signal QObject::doValueChangeOnMainThread(KnobI*, int, double, ViewSpec, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5065
QObject::connect: No such signal QObject::doEndChangesOnMainThread() in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5062
QObject::connect: No such signal QObject::doEvaluateOnMainThread(bool, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5063
QObject::connect: No such signal QObject::doValueChangeOnMainThread(KnobI*, int, double, ViewSpec, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5065
QObject::connect: No such signal QObject::doEndChangesOnMainThread() in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5062
QObject::connect: No such signal QObject::doEvaluateOnMainThread(bool, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5063
QObject::connect: No such signal QObject::doValueChangeOnMainThread(KnobI*, int, double, ViewSpec, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5065
Load OFX Plugins...
Load OFX Plugins: do not use std plugins location
Load OFX Plugins: reading cache file "C:/Users/Ted/AppData/Local/INRIA/Natron/cache/OFXLoadCache/OFXCache_2.5_Devel_0.xml"
Load OFX Plugins: cannot open cache file "C:/Users/Ted/AppData/Local/INRIA/Natron/cache/OFXLoadCache/OFXCache_2.5_Devel_0.xml"
Load OFX Plugins: plugin path is
Load OFX Plugins: scan plugins...
Load OFX Plugins: scan plugins... done!
Load OFX Plugins... done!
templatesSearchPath:  ("C:/Users/Ted/.Natron", "C:\\Program Files\\Common Files\\Natron\\Plugins")
args:
"D:\\ted\\test.ntp"
* Command-line parsing results:
clearCacheOnLaunch: false
clearOpenFXCacheOnLaunch: false
useDefaultSettings: false
isBackground: true
isInterpreterMode: false
enableRenderStats: false
exportDocsPath: ""
ipcPipe: ""
defaultOnProjectLoadedScript: ""
settingCommands:
pythonCommands:
writers:
readers:
atLeastOneOutput: false
filename: "D:/ted/test.ntp"
rangeSet: false
frameRanges:
* End of command-line parsing results.
QObject::connect: No such signal QObject::doEndChangesOnMainThread() in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5062
QObject::connect: No such signal QObject::doEvaluateOnMainThread(bool, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5063
QObject::connect: No such signal QObject::doValueChangeOnMainThread(KnobI*, int, double, ViewSpec, bool) in D:\Users\Ted\Source\Repos\Natron-51\Engine\Knob.cpp:5065
QObject::connect: No such slot QObject::onAutoSaveTimerTriggered() in D:\Users\Ted\Source\Repos\Natron-51\Engine\Project.cpp:124
QObject::connect: No such signal QObject::populated() in D:\Users\Ted\Source\Repos\Natron-51\Engine\Project.cpp:874
Loading project: D:/ted/test.ntp
ERROR: Project loader: Error while loading project: Unrecognized or damaged project file: input stream error
ERROR: Natron: Project file loading failed.
YakoYakoYokuYoku commented 2 years ago

You seem to not be using the current main development branch, namely RB-2.5, nor RB-2.4. My recommendation is to check out to one of them (also pull changes too) and to use PySide2 with CMake (PR #809) in case you want to use RB-2.5. In Arch Linux I can comfortably use Boost 1.79.0 and I know that it works in other platforms too. Your feedback is appreciated.

a01163125 commented 2 years ago

You seem to not be using the current main development branch, namely RB-2.5, nor RB-2.4. My recommendation is to check out to one of them (also pull changes too) and to use PySide2 with CMake (PR #809) in case you want to use RB-2.5. In Arch Linux I can comfortably use Boost 1.79.0 and I know that it works in other platforms too. Your feedback is appreciated.

Thank you anyway. I have done some cover-up(partially delete an re-run) tests on ntp file and the they went well so that I could basically confirm Boost 1.79 works. I am doing some follow-up testing to locate the bug. I will report the progress.

a01163125 commented 2 years ago

ADD: \Engine\FormatSerialization.h Problem Solved!

rodlie commented 2 years ago

btw, if your are trying to get Natron building on MSVC (I guess that's what you are doing?), then I would recommend basing that on the newly added (experimental) CMake support.