Hi,
On 04/10/2020 13:58, Patrick Ohly wrote:
Merlijn Wajer <merlijn(a)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@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@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@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@entry=0x555557a068a0, aItemKey=aItemKey@entry=0x555557b1fb90,
parentID=parentID@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@entry=sysync::sop_add,
aItemP=aItemP@entry=0x555557b23b10, aMetaP=aMetaP@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@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@entry=0x5555579e8d20, aSyncCommandP=0x555557b00b80)
at sysync/syncsession.cpp:2576
#24 0x00007ffff66e89d5 in sysync::TSyncSession::AddCmd(sml_generic_s*)
(this=this@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@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@entry=0x5555579e8d20, aStepCmd=@0x7fffffffc09a: 102,
aInfoP=aInfoP@entry=0x7fffffffc230) at sysync/syncagent.cpp:3257
#29 0x00007ffff66c895f in sysync::TSyncAgent::SessionStep(unsigned short&,
sysync::TEngineProgressType*)
(this=this@entry=0x5555579e8d20, aStepCmd=@0x7fffffffc09a: 102,
aInfoP=aInfoP@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 ()