From: Danny B. <dan...@sc...> - 2005-09-08 21:28:05
|
Hmm, to add to my confusion, the crash went away. I'm feeling really silly. Danny On Thu, 2005-09-08 at 21:26 +0200, Danny Backx wrote: > I'm a bit lost, I need help. >=20 > I am working on the SynCE file synchronisation. The directories I'm > syncing in this example are : > dell: {80} l /tmp/onlyfile/ > total 1652 > -rw-rw-r-- 1 danny backx 50089 Sep 3 07:47 \My Documents\foto > \inge.gif > -rw-rw-r-- 1 danny backx 58605 Sep 3 07:47 \My Documents\foto > \kristof.gif > -rw-rw-r-- 1 danny backx 3694 Sep 3 07:47 \My Documents\foto > \tux068d.gif > -rw-r--r-- 1 danny backx 1558120 Sep 1 21:16 wife_call.wmv > dell: {81} pls foto/ > AC-------- 58605 Sun 10 Jul 2005 10:46:26 CEST kristof.gif > AC-------- 50089 Sun 10 Jul 2005 10:46:26 CEST inge.gif > AC-------- 3694 Sun 10 Jul 2005 10:44:56 CEST tux068d.gif >=20 > The contents of /tmp/onlyfile are mostly there by syncing, only the WMV > file was put there by other means. >=20 > New syncs now fail as shown here : > msynctool --sync f > Synchronizing group "f"=20 > The previous synchronization was unlean. Slow-syncing > Member 1 of type file-sync just connected > Member 2 of type synce-plugin just connected > All clients connected or error > FilesReportFileChange(\My Documents\foto\kristof.gif) > Received a entry \My Documents\foto\tux068d.gif without data from member > 1. Changetype 1 > FilesReportFileChange(\My Documents\foto\inge.gif) > Received a entry \My Documents\foto\kristof.gif without data from member > 2. Changetype 1 > FilesReportFileChange(\My Documents\foto\tux068d.gif) > Received a entry \My Documents\foto\kristof.gif without data from member > 1. Changetype 1 > Received a entry \My Documents\foto\inge.gif without data from member 2. > Changetype 1 > Received a entry \My Documents\foto\inge.gif without data from member 1. > Changetype 1 > Received a entry wife_call.wmv without data from member 1. Changetype 1 > Received a entry \My Documents\foto\tux068d.gif without data from member > 2. Changetype 1 > Member 1 of type file-sync just sent all changes > Received a entry \My Documents\foto\tux068d.gif with data of size 24 > from member 1. Changetype 1 > Received a entry \My Documents\foto\kristof.gif with data of size 24 > from member 1. Changetype 1 > Received a entry \My Documents\foto\inge.gif with data of size 24 from > member 1. Changetype 1 > Received a entry wife_call.wmv with data of size 24 from member 1. > Changetype 1 > Member 2 of type synce-plugin just sent all changes > All clients sent changes or error > Received a entry \My Documents\foto\kristof.gif with data of size 4 from > member 2. Changetype 1 > Received a entry \My Documents\foto\inge.gif with data of size 4 from > member 2. Changetype 1 > Segmentation fault (core dumped) >=20 > And the reason of the crash is : >=20 > #0 0xb7bdd923 in wstr_from_x (inbuf=3D0x0, code=3D0x806cd98 "ISO-8859-1"= ) > at wstr.c:133 > 133 size_t length =3D strlen(inbuf); > (gdb) where > #0 0xb7bdd923 in wstr_from_x (inbuf=3D0x0, code=3D0x806cd98 "ISO-8859-1"= ) > at wstr.c:133 > #1 0xb7bdda8f in wstr_from_current (inbuf=3D0x0) at wstr.c:192 > #2 0xb75e6bf7 in file_get_data (ctx=3D0x80755e0, change=3D0x805fac0) at > synce_file.c:389 > #3 0xb7f0a049 in osync_member_get_change_data (member=3D0x805e0f8, > change=3D0x805fac0,=20 > function=3D0xb7f1ebc0 <message_callback>, user_data=3D0x80786b8) at > opensync_member.c:1093 > #4 0xb7f1ee70 in client_message_handler () > from /usr/local/lib/libosengine.so.0 > #5 0xb7f1e719 in _queue_dispatch () > from /usr/local/lib/libosengine.so.0 > #6 0xb7f4f0c4 in g_main_dispatch () > from /usr/local/lib/libglib-2.0.so.0 > #7 0xb7f4ff1d in g_main_context_dispatch () > from /usr/local/lib/libglib-2.0.so.0 > #8 0xb7f502df in g_main_context_iterate () > from /usr/local/lib/libglib-2.0.so.0 > #9 0xb7f508a3 in g_main_loop_run () > from /usr/local/lib/libglib-2.0.so.0 > #10 0xb7f68bea in g_thread_create_proxy () > from /usr/local/lib/libglib-2.0.so.0 > #11 0xb7d553b0 in start_thread () from /lib/tls/libpthread.so.0 > #12 0xb7cb826e in clone () from /lib/tls/libc.so.6 > (gdb) up > #1 0xb7bdda8f in wstr_from_current (inbuf=3D0x0) at wstr.c:192 > 192 return wstr_from_x(inbuf, get_current_codeset()); > (gdb)=20 > #2 0xb75e6bf7 in file_get_data (ctx=3D0x80755e0, change=3D0x805fac0) at > synce_file.c:389 > 389 wfn =3D wstr_from_current(ff->data); > (gdb) p *ff > $1 =3D {mode =3D 0, userid =3D 0, groupid =3D 0, last_mod =3D 0, data =3D= 0x0, size > =3D 0} >=20 > This is in the file_get_data() function I wrote : > extern void file_get_data(OSyncContext *ctx, OSyncChange *change) > { > synce_plugin_environment *env; > fileFormat *ff; > HANDLE h; > size_t rsz; > WCHAR *wfn; > int r; >=20 > osync_debug("SynCE-File", 4, "start : %s", __func__); > env =3D (synce_plugin_environment > *)osync_context_get_plugin_data(ctx); > ff =3D (fileFormat *)osync_change_get_data(change); > /* > * There appears to be a trick being used here. > * > * First report some stuff, use the data field to pass random > data (e.g. the file > * name) to ourselves. > * Then, in the get_data() call, read that data and replace it > with the file content. > */ > wfn =3D wstr_from_current(ff->data); >=20 > /* Read the file through SynCE */ > h =3D CeCreateFile(wfn, GENERIC_READ, 0, NULL, OPEN_EXISTING, > FILE_ATTRIBUTE_NORMAL, 0); >=20 > free(ff->data); > ff->data =3D malloc(ff->size); >=20 > r =3D CeReadFile(h, ff->data, ff->size, &rsz, NULL); > if (r =3D=3D 0) { > /* Error */ > DWORD e =3D CeGetLastError(); > char *s =3D synce_strerror(e); > osync_context_report_error(ctx, 1, "Error from > CeReadFile (%s)", s); > CeCloseHandle(h); > return; > } >=20 > /* Send its contents */ > osync_change_set_data(change, (char *)ff, sizeof(ff), TRUE); > CeCloseHandle(h); >=20 > wstr_free_string(wfn); > osync_context_report_success(ctx); > osync_debug("SynCE-File", 4, "end : %s", __func__); > } >=20 > Can anyone give me a clue why this function is being called with > arguments filled with NULLs ? >=20 > Thanks, >=20 > Danny --=20 Danny Backx ; danny.backx - at - scarlet.be ; http://danny.backx.info |