[SyncEvolution] Re: Fixing the Maemo backend

Merlijn Wajer merlijn at wizzup.org
Sun Oct 4 14:23:58 UTC 2020


Hi,

On 04/10/2020 13:58, Patrick Ohly wrote:
> Merlijn Wajer <merlijn at wizzup.org> writes:
>> I'm interested in getting the Maemo backend up and running again, to be
>> used in 'Maemo Leste' (Maemo 5, 100% open source, based on stable
>> Devuan/Debian).
> 
> As you noticed, that backend needs a maintainer. I'm currently trying to
> get an updated SyncEvolution release-ready (using more modern C++,
> adapted to recent versions of the libraries it depends on). If you care
> about Maemo to work in that release, then now is a good time to debug
> this.

Ok, if I can bend it into shape I'm happy to maintain it for now.

> There is a "for-master/master-next" branch with the revised code, but I
> am still rebasing that from time to time.

Check, let me try to get it to work first.

>> Then, I can see my calendar backends and invoke a sync, but it throws a
>> weird error when I try to sync like this:
>>
>>> user at devuan:~$ syncevolution --sync refresh-from-client radicale calendar
>>
>> This error shows up a lot (but maybe it is not harmful?):
>>
>>> [ERROR] @default/radicalecal: basic_string::replace: __pos (which is
>> 4294967295) > this->size() (which is 11)
> 
> This indicates that an invalid string replace was attempted for a C++
> string (out-of-bounds index), which got caught by the C++ runtime and
> turned into an exception.

Check.

> 
> There's no strack trace for the exception printed, so it's impossible to
> determine where it occurs.
> 
> Try this:
> 
> SYNCEVOLUTION_DEBUG=1 gdb --args syncevolution --daemon=no \
>              --sync-property loglevel=10 \
>              --sync refresh-from-client radicale radicalecal
> 
> When the exception is thrown, gdb might stop.

I entered this in gdb before typing 'run':

> catch throw .*

And then it caught the exception [1]. And it looks like the exception is
in "calendar-backend", which is a Maemo component - so the problem might
not even be in syncevolution per se.

I will dive in, and I will let you know. Thank you for the quick response.

Cheers,
Merlijn


[1]

> Thread 1 "syncevolution" hit Catchpoint 1 (exception thrown), 0x00007ffff7367afd in __cxa_throw () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> (gdb) bt
> #0  0x00007ffff7367afd in __cxa_throw () at /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> #1  0x00007ffff7363891 in  () at /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> #2  0x00007ffff35d6d41 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_check(unsigned long, char const*) const
>     (__s=0x7ffff35faf24 "basic_string::replace", __pos=<optimized out>, this=0x7fffffff9d50) at /usr/include/c++/8/bits/basic_string.h:299
> #3  0x00007ffff35d6d41 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::replace(unsigned long, unsigned long, char const*, unsigned long) (__n2=1, __s=0x7ffff360806b ",", __n1=2, __pos=<optimized out>, this=0x7fffffff9d50) at /usr/include/c++/8/bits/basic_string.h:1932
> #4  0x00007ffff35d6d41 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::replace(unsigned long, unsigned long, char const*)
>     (__s=0x7ffff360806b ",", __n1=2, __pos=<optimized out>, this=0x7fffffff9d50) at /usr/include/c++/8/bits/basic_string.h:1955
> #5  0x00007ffff35d6d41 in ICalConverter::icalVcalToLocal(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, FileType, int&)
>     (this=this at entry=0x555557b23de0, szCont="BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//Synthesis AG//NONSGML SyncML Engine V3.4.0.47//EN\nBEGIN:VTIMEZONE\nTZID:Amsterdam\nBEGIN:STANDARD\nDTSTART:19671029T030000\nRRULE:FREQ=MONTHLY;INTERVAL=12;BYDAY=-1SU\n"..., iType=iType at entry=ICAL_TYPE, pErrorCode=@0x7fffffffabdc: 21845)
>     at ICalConverter.cpp:3940
> #6  0x00007ffff36cdd41 in SyncEvo::MaemoCalendarSource::insertItem(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)
>     (this=0x5555579d4560, uid="", item="BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Synthesis AG//NONSGML SyncML Engine V3.4.0.47//EN\r\nBEGIN:VTIMEZONE\r\nTZID:Amsterdam\r\nBEGIN:STANDARD\r\nDTSTART:19671029T030000\r\nRRULE:FREQ=MONTHLY;INTERVAL=12;BYDA"..., raw=<optimized out>) at /usr/include/c++/8/bits/basic_string.h:936
> #7  0x00007ffff7a61cd7 in boost::detail::function::function_obj_invoker0<boost::_bi::bind_t<SyncEvo::SyncSourceRaw::InsertItemResult, boost::_mfi::mf3<SyncEvo::SyncSourceRaw::InsertItemResult, SyncEvo::TrackingSyncSource, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool>, boost::_bi::list4<boost::_bi::value<SyncEvo::TrackingSyncSource*>, boost::_bi::value<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::_bi::value<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::_bi::value<bool> > >, SyncEvo::SyncSourceRaw::InsertItemResult>::invoke(boost::detail::function::function_buffer&) ()
>     at /usr/lib/x86_64-linux-gnu/libsyncevolution.so.0
> #8  0x00007ffff7a5fe23 in SyncEvo::TrackingSyncSource::continueInsertItem(boost::function<SyncEvo::SyncSourceRaw::InsertItemResult ()> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) () at /usr/lib/x86_64-linux-gnu/libsyncevolution.so.0
> #9  0x00007ffff7a61163 in SyncEvo::TrackingSyncSource::doInsertItem(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) () at /usr/lib/x86_64-linux-gnu/libsyncevolution.so.0
> #10 0x00007ffff7a61580 in SyncEvo::TrackingSyncSource::insertItem(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) () at /usr/lib/x86_64-linux-gnu/libsyncevolution.so.0
> #11 0x00007ffff798f213 in SyncEvo::SyncSourceSerialize::insertItemAsKey(sysync::KeyType*, sysync::ItemIDType*) () at /usr/lib/x86_64-linux-gnu/libsyncevolution.so.0
> #12 0x00007ffff79a373a in boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<boost::variant<unsigned short, SyncEvo::ContinueOperation<unsigned short (sysync::KeyType*, sysync::ItemIDType*)> >, boost::_mfi::mf2<boost::variant<unsigned short, SyncEvo::ContinueOperation<unsigned short (sysync::KeyType*, sysync::ItemIDType*)> >, SyncEvo::SyncSourceSerialize, sysync::KeyType*, sysync::ItemIDType*>, boost::_bi::list3<boost::_bi::value<SyncEvo::SyncSourceSerialize*>, boost::arg<1>, boost::arg<2> > >, boost::variant<unsigned short, SyncEvo::ContinueOperation<unsigned short (sysync::KeyType*, sysync::ItemIDType*)> >, sysync::KeyType*, sysync::ItemIDType*>::invoke(boost::detail::function::function_buffer&, sysync::KeyType*, sysync::ItemIDType*) () at /usr/lib/x86_64-linux-gnu/libsyncevolution.so.0
> #13 0x00007ffff79d9927 in SyncEvo::OperationWrapperSwitch<boost::variant<unsigned short, SyncEvo::ContinueOperation<unsigned short (sysync::KeyType*, sysync::ItemIDType*)> > (sysync::KeyType*, sysync::ItemIDType*), 2, boost::variant<unsigned short, SyncEvo::ContinueOperation<unsigned short (sysync::KeyType*, sysync::ItemIDType*)> > >::operator()(sysync::KeyType*, sysync::ItemIDType*) const () at /usr/lib/x86_64-linux-gnu/libsyncevolution.so.0
> #14 0x00007ffff79c582a in SyncEvolution_InsertItemAsKey () at /usr/lib/x86_64-linux-gnu/libsyncevolution.so.0
> #15 0x00007ffff662a116 in sysync::TDB_Api::InsertItemAsKey(sysync::KeyType*, char const*, sysync::TDB_Api_ItemID&)
>     (this=this at entry=0x555557a068a0, aItemKey=aItemKey at entry=0x555557b1fb90, parentID=parentID at entry=0x7ffff67428d5 "", newID=...)
>     at DB_interfaces/api_db/dbapi.cpp:1924
> #16 0x00007ffff6633080 in sysync::TPluginApiDS::apiAddItem(sysync::TMultiFieldItem&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)
>     (this=0x555557a05860, aItem=..., aLocalID="") at DB_interfaces/api_db/pluginapids.cpp:1384
> #17 0x00007ffff6666533 in sysync::TCustomImplDS::implProcessItem(sysync::TSyncItem*, sysync::TStatusCommand&)
>     (this=0x555557a05860, aItemP=0x555555637260, aStatusCommand=...) at sysync/customimplds.cpp:2918
> #18 0x00007ffff66bb773 in sysync::TStdLogicDS::logicProcessRemoteItem(sysync::TSyncItem*, sysync::TStatusCommand&, bool&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*) (this=0x555557a05860, syncitemP=0x555555637260, aStatusCommand=..., aVisibleInSyncset=@0x7fffffffbb1f: true, aGUID=0x0)
>     at sysync/stdlogicds.cpp:1446
> #19 0x00007ffff668a807 in sysync::TLocalEngineDS::engProcessRemoteItemAsServer(sysync::TSyncItem*, sysync::TStatusCommand&)
>     (this=<optimized out>, aSyncItemP=0x555555637260, aStatusCommand=...) at sysync/localengineds.cpp:6407
> #20 0x00007ffff66828dc in sysync::TLocalEngineDS::engProcessSyncOpItem(sysync::TSyncOperation, sml_item_s*, sml_metinf_metinf_s*, sysync::TStatusCommand&)
>     (this=0x555557a05860, aSyncOp=aSyncOp at entry=sysync::sop_add, aItemP=aItemP at entry=0x555557b23b10, aMetaP=aMetaP at entry=0x555557b197c0, aStatusCommand=...)
>     at sysync/localengineds.cpp:5277
> #21 0x00007ffff66dfdc8 in sysync::TSyncSession::processSyncOpItem(sysync::TSyncOperation, sml_item_s*, sml_metinf_metinf_s*, sysync::TLocalEngineDS*, sysync::TStatusCommand&, bool&)
>     (this=0x5555579e8d20, aSyncOp=<optimized out>, aItemP=0x555557b23b10, aMetaP=aMetaP at entry=0x555557b197c0, aLocalSyncDatastore=<optimized out>, aStatusCommand=..., aQueueForLater=@0x7fffffffbd3b: false) at sysync/syncsession.cpp:3999
> #22 0x00007ffff66d725e in sysync::TSyncOpCommand::execute() (this=0x555557b00b80) at sysync/synccommand.cpp:2637
> #23 0x00007ffff66e846e in sysync::TSyncSession::process(sysync::TSmlCommand*) (this=this at entry=0x5555579e8d20, aSyncCommandP=0x555557b00b80)
>     at sysync/syncsession.cpp:2576
> #24 0x00007ffff66e89d5 in sysync::TSyncSession::AddCmd(sml_generic_s*) (this=this at entry=0x5555579e8d20, aContentP=<optimized out>) at sysync/syncsession.cpp:5803
> #25 0x00007ffff66cc1bc in sysync::TSyncAppBase::AddCmd(void*, sml_generic_s*) (this=0x5555555c4670, userData=0x5555579e8d20, aContentP=<optimized out>)
>     at sysync/syncappbase.cpp:2113
> #26 0x00007ffff6990356 in smlProcessData () at /usr/lib/x86_64-linux-gnu/libsmltk.so.0
> #27 0x00007ffff66c50cd in sysync::TSyncAgent::ServerProcessingStep(unsigned short&, sysync::TEngineProgressType*)
>     (this=this at entry=0x5555579e8d20, aStepCmd=@0x7fffffffc09a: 102, aInfoP=<optimized out>) at sysync/syncagent.cpp:3289
> #28 0x00007ffff66c6a69 in sysync::TSyncAgent::ServerSessionStep(unsigned short&, sysync::TEngineProgressType*)
>     (this=this at entry=0x5555579e8d20, aStepCmd=@0x7fffffffc09a: 102, aInfoP=aInfoP at entry=0x7fffffffc230) at sysync/syncagent.cpp:3257
> #29 0x00007ffff66c895f in sysync::TSyncAgent::SessionStep(unsigned short&, sysync::TEngineProgressType*)
>     (this=this at entry=0x5555579e8d20, aStepCmd=@0x7fffffffc09a: 102, aInfoP=aInfoP at entry=0x7fffffffc230) at sysync/syncagent.cpp:3058
> #30 0x00007ffff6649276 in sysync::TServerEngineInterface::SessionStep(sysync::SessionType*, unsigned short&, sysync::TEngineProgressType*)
>     (this=<optimized out>, aSessionH=0x5555579e8ab0, aStepCmd=@0x7fffffffc09a: 102, aInfoP=0x7fffffffc230) at Transport_interfaces/engine/enginesessiondispatch.cpp:478
> #31 0x00007ffff790556b in SyncEvo::SharedEngine::SessionStep(boost::shared_ptr<sysync::SessionType> const&, unsigned short&, sysync::TEngineProgressType*) ()
>     at /usr/lib/x86_64-linux-gnu/libsyncevolution.so.0
> #32 0x00007ffff79f3ba8 in SyncEvo::SyncContext::doSync() () at /usr/lib/x86_64-linux-gnu/libsyncevolution.so.0
> #33 0x00007ffff79fb713 in SyncEvo::SyncContext::sync(SyncEvo::SyncReport*) () at /usr/lib/x86_64-linux-gnu/libsyncevolution.so.0
> #34 0x00007ffff7962711 in SyncEvo::Cmdline::run() () at /usr/lib/x86_64-linux-gnu/libsyncevolution.so.0
> #35 0x000055555556d24f in main ()


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/syncevolution/attachments/20201004/7d330114/attachment.sig>


More information about the SyncEvolution mailing list