Am 14.01.2021 um 17:57 schrieb Stephan Witt <st.w...@gmx.net>: > > Am 14.01.2021 um 17:09 schrieb Stephan Witt <st.w...@gmx.net>: >> >> Am 14.01.2021 um 09:30 schrieb Yuriy Skalko <yuriy.ska...@gmail.com>: >>> >>>> Sorry, I’ve reverted the change for now locally. I can answer your >>>> questions later… >>>> Perhaps the compiler flags of the autotools build are of interest (but >>>> cmake build crashes either): >>>> Configuration >>>> Host type: x86_64-apple-darwin18.7.0 >>>> Special build flags: build=release warnings callback-printing >>>> use-hunspell use-aspell >>>> Bundled libraries: nod boost mythes >>>> C++ Compiler: c++ -stdlib=libc++ (11.0.0) >>>> C++ Compiler flags: -Wall -Wextra -fPIC -Os -std=c++17 >>>> -Wno-deprecated-register >>>> C++ Compiler user flags: -I/Users/Shared/LyX/utilities/include >>>> -isysroot >>>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk >>>> -arch x86_64 -mmacosx-version-min=10.10 -std=c++17 -std=c++11 >>>> Linker flags: -rdynamic >>>> Linker user flags: -L/Users/Shared/LyX/utilities/lib -isysroot >>>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk >>>> -arch x86_64 -mmacosx-version-min=10.10 >>>> Qt Frontend: >>>> Qt version: 5.12.9 >>>> Packaging: macosx >>>> Are all these library and compiler standard choice switches compatible and >>>> correct? >>>> Stephan >>> >>> >>> Thanks for testing Stephan and Scott. >>> So seems like it is macos-only issue. I see nothing suspicious in your >>> compiler flags (are you manually override default C++17 to C++11?). >> >> Yes, in the past I was forced to do so. I’ll try to work with consistent >> compiler switches. >> >> Should it work w/o -std=c++17? What do expect to happen with different >> compiler switches for build of Qt-libs and LyX? > > Ok, it doesn’t work on Apple with c++17 w/o loosing backwards compatibility > and many warnings about deprecated classes: > > Configuration > Host type: x86_64-apple-darwin18.7.0 > Special build flags: build=release warnings callback-printing > use-hunspell use-aspell > Bundled libraries: nod boost mythes > C++ Compiler: c++ -stdlib=libc++ (11.0.0) > C++ Compiler flags: -Wall -Wextra -fPIC -Os -std=c++17 > -Wno-deprecated-register > C++ Compiler user flags: -I/Users/Shared/LyX/utilities/include -isysroot > /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk > -arch x86_64 -mmacosx-version-min=10.10 -std=c++17 -std=c++17 > Linker flags: -rdynamic > Linker user flags: -L/Users/Shared/LyX/utilities/lib -isysroot > /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk > -arch x86_64 -mmacosx-version-min=10.10 > > The show stopper with -mmacosx-version-min=10.10 is: > > /Users/stephan/git/lyx/src/insets/ExternalTransforms.cpp:334:20: error: > 'any_cast<std::__1::function<std::__1::unique_ptr<const > lyx::external::TransformCommand, std::__1::default_delete<const > lyx::external::TransformCommand> > (lyx::external::RotationData)> >' is > unavailable: introduced in macOS 10.14 > Factory factory = any_cast<Factory>(any_factory); > > Using -mmacosx-version-min=10.14 as suggested I’m able to build LyX - but > after revert of the revert (add move constructor again) it crashes again. > > Using -mmacosx-version-min=10.10 and c++11 consistently it crashes too.
I used the debugger to bring some light into it. The crash is at lastfiles.insert: ======================== void LastFilesSection::add(FileName const & file) { // If file already exist, delete it and reinsert at front. LastFiles::iterator it = find(lastfiles.begin(), lastfiles.end(), file); if (it != lastfiles.end()) lastfiles.erase(it); lastfiles.insert(lastfiles.begin(), file); if (lastfiles.size() > num_lastfiles) lastfiles.pop_back(); } ======================== This is the implementation of vector::insert() ======================== template <class _Tp, class _Allocator> typename vector<_Tp, _Allocator>::iterator vector<_Tp, _Allocator>::insert(const_iterator __position, const_reference __x) { #if _LIBCPP_DEBUG_LEVEL >= 2 _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__position) == this, "vector::insert(iterator, x) called with an iterator not" " referring to this vector"); #endif pointer __p = this->__begin_ + (__position - begin()); if (this->__end_ < this->__end_cap()) { __RAII_IncreaseAnnotator __annotator(*this); if (__p == this->__end_) { __alloc_traits::construct(this->__alloc(), _VSTD::__to_raw_pointer(this->__end_), __x); ++this->__end_; } else { __move_range(__p, this->__end_, __p + 1); const_pointer __xr = pointer_traits<const_pointer>::pointer_to(__x); if (__p <= __xr && __xr < this->__end_) ++__xr; *__p = *__xr; <====== here it crashes } __annotator.__done(); } else { allocator_type& __a = this->__alloc(); __split_buffer<value_type, allocator_type&> __v(__recommend(size() + 1), __p - this->__begin_, __a); __v.push_back(__x); __p = __swap_out_circular_buffer(__v, __p); } return __make_iter(__p); } ======================== And this is the __move_range allocator: ======================== template <class _Tp, class _Allocator> void vector<_Tp, _Allocator>::__move_range(pointer __from_s, pointer __from_e, pointer __to) { pointer __old_last = this->__end_; difference_type __n = __old_last - __to; for (pointer __i = __from_s + __n; __i < __from_e; ++__i, ++this->__end_) __alloc_traits::construct(this->__alloc(), _VSTD::__to_raw_pointer(this->__end_), _VSTD::move(*__i)); _VSTD::move_backward(__from_s, __from_s + __n, __old_last); } ======================== Here the member d is a nullptr: ======================== FileName & FileName::operator=(FileName const & rhs) { if (&rhs == this) return *this; d->name = rhs.d->name; d->fi = rhs.d->fi; return *this; } ======================== I don’t know if this is helpful. Stephan -- lyx-devel mailing list lyx-devel@lists.lyx.org http://lists.lyx.org/mailman/listinfo/lyx-devel