[dev] [Tickets #11777] Re: ActiveSync error after latest changes in git

Michael J Rubinsky mrubinsk at horde.org
Thu Dec 20 14:44:43 UTC 2012


Quoting Joerg Pulz <Joerg.Pulz at frm2.tum.de>> -----BEGIN PGP SIGNED  
MESSAGE-----
> Hash: SHA1
>
>
> On Tue, 18 Dec 2012, Michael J Rubinsky wrote:
>
>>
>> Quoting Joerg Pulz <Joerg.Pulz at frm2.tum.de>:
>>
>>> -----BEGIN PGP SIGNED MESSAGE-----
>>> Hash: SHA1
>>>
>>>
>>> On Tue, 18 Dec 2012, Michael J Rubinsky wrote:
>>>
>>>>
>>>> Quoting Joerg Pulz <Joerg.Pulz at frm2.tum.de>:
>>>>
>>>>> On Mon, 17 Dec 2012, Michael J Rubinsky wrote:
>>>>>
>>>>>>
>>>>>> Quoting Joerg Pulz <Joerg.Pulz at frm2.tum.de>:
>>>>>>
>>>>>>> Hi Michael,
>>>>>>>
>>>>>>> here are two mails, directly copied out of our cyrus-imapd  
>>>>>>> mailstore, to
>>>>>>> keep the whole unmodified content.
>>>>>>> Both messages lead to php-fpm segfault with "Sending HTML  
>>>>>>> Message." as last
>>>>>>> log entry.
>>>>>>>
>>>>>>> Hope this helps to find the problem.
>>>>>>
>>>>>> Can you try the latest changes I just pushed to Git?
>>>>>
>>>>> Hi Michael,
>>>>>
>>>>> just pulled the latest changes from git, stopped all services, purged all
>>>>> caches and removed the device from ActiveSync devices.
>>>>> Both messages i sent you yesterday where transferred correctly but it
>>>>> stops at another two mails with the following log entry:
>>>>>
>>>>> ####
>>>>> 2012-12-18T09:00:05+01:00 DEBUG: O  <Synchronize>
>>>>> 2012-12-18T09:00:05+01:00 DEBUG: O   <Status>
>>>>> 2012-12-18T09:00:05+01:00 DEBUG: O    1
>>>>> 2012-12-18T09:00:05+01:00 DEBUG: O   <Status/>
>>>>> 2012-12-18T09:00:05+01:00 DEBUG: [89302] Initializing state for  
>>>>> collection: INBOX, synckey:  
>>>>> {50d02135-4528-455c-8534-5cc881bbb396}3
>>>>> 2012-12-18T09:00:05+01:00 DEBUG: [89302] Loading state for  
>>>>> synckey {50d02135-4528-455c-8534-5cc881bbb396}3
>>>>> 2012-12-18T09:00:05+01:00 DEBUG: [89302] Found 5 changes  
>>>>> remaining from previous SYNC.
>>>>> 2012-12-18T09:00:05+01:00 DEBUG: [89302] Initializing message  
>>>>> diff engine for INBOX
>>>>> 2012-12-18T09:00:05+01:00 DEBUG: [89302] Returning previously  
>>>>> found changes.
>>>>> 2012-12-18T09:00:05+01:00 DEBUG: Old SYNCKEY:  
>>>>> {50d02135-4528-455c-8534-5cc881bbb396}3, New SYNCKEY:  
>>>>> {50d02135-4528-455c-8534-5cc881bbb396}4
>>>>> 2012-12-18T09:00:05+01:00 DEBUG: O   <Folders>
>>>>> 2012-12-18T09:00:05+01:00 DEBUG: O    <Folder>
>>>>> 2012-12-18T09:00:05+01:00 DEBUG: O     <SyncKey>
>>>>> 2012-12-18T09:00:05+01:00 DEBUG: O  
>>>>> {50d02135-4528-455c-8534-5cc881bbb396}4
>>>>> 2012-12-18T09:00:05+01:00 DEBUG: O     <SyncKey/>
>>>>> 2012-12-18T09:00:05+01:00 DEBUG: O     <FolderId>
>>>>> 2012-12-18T09:00:05+01:00 DEBUG: O      INBOX
>>>>> 2012-12-18T09:00:05+01:00 DEBUG: O     <FolderId/>
>>>>> 2012-12-18T09:00:05+01:00 DEBUG: O     <Status>
>>>>> 2012-12-18T09:00:05+01:00 DEBUG: O      1
>>>>> 2012-12-18T09:00:05+01:00 DEBUG: O     <Status/>
>>>>> 2012-12-18T09:00:05+01:00 DEBUG:  
>>>>> Horde_Core_ActiveSync_Driver::getMessage(INBOX, 392277)
>>>>> 2012-12-18T09:00:06+01:00 DEBUG:
>>>>> 2012-12-18T09:00:06+01:00 DEBUG: Sending HTML Message.
>>>>> ####
>>>>>
>>>>> I will send you a off-list mail with the mails in question. Just curious,
>>>>> there is no HTML at all in those messages.
>>>>
>>>> Can you send me a more complete log for this? I'm looking for the  
>>>> request that triggered this response (the request would start  
>>>> with: I    <SYNC>. I'm looking for the options your device is  
>>>> sending, including the truncation value.
>>>>
>>>> FWIW, it's not about if the email contains HTML or not, it's  
>>>> about what the server is requesting. It requests bare HTML email  
>>>> (not a MIME message).
>>>
>>> Michael,
>>>
>>> thanks for explaining. Found it out by myself, that Android gets  
>>> HTML messages deliverd and iPhone gets MIME messages.
>>>
>>> Please find attached the log for a failing Android sync from login  
>>> to segfault. As you will see, there are two messages delivered  
>>> before the segfault occurs.
>>>
>>> Hope this helps.
>>
>> Can you try again with my latest changes in Git?
>
> Michael,
>
> here are some news on this topic as I finally found some time to  
> investigate this further.
>
> First some details about my environment that i totally forgot to  
> mention earlier:
>
> OS:		FreeBSD 9.1-RC2 amd64
> Software:	PHP-5.4.9 (FPM), nginx-1.2.6, memcached-1.4.15,
> 		postgresql-9.2.2, pcre-8.32
>
> The segfault occurs in the match() function of libpcre.
> After searching the web i found PHPbug #48153:
> 	https://bugs.php.net/bug.php?id=48153
> I checked the configure values for the php hash module and removed  
> "--with-mhash". After rebuilding and installing the php hash module  
> I was able to sync some eMails more but still ended in a segfault  
> again.
> I attached gdb to the php-fpm process and found out that libpcre  
> match() was called recursive over 5700 times until it hit the  
> stacksize limit which leads to the segfault.
> I tried increasing the stacksize again and again, but i still ended  
> in a segfault again.
> After reading pcre docs ( http://pcre.org/pcre.txt ) i've rebuilt  
> libpcre and used the "--disable-stack-for-recursion" configure  
> option.After reinstalling the rebuilt libpcre and restarting  
> php-fpm, the segfaults are gone and i can sync all my eMails again.
>
> It looks like some of the horde/ActiveSync pcre actions lead to a  
> massive recursive call to the libpcre match() function which then  
> reaches the stacksize limit. There is some good reading in the  
> pcrestack(3) manpage about how to reduce/limit stack usage. Maybe  
> it's worth to check the used pcre match pattern again to see if they  
> can be rewritten to produce less recursive calls to match() and  
> thereby use lass stack.
>
> I think we've hit the same problem during turba adressbook import  
> using CSV files, but i have to recheck that.
>
> So for now, ActiveSync seems to work quite well, but somehow some  
> eMails are not transferred correctly. In Android the header and  
> attachments are displayed and readable but the mail body is empty.  
> The same holds true for iPhone devices. IMP and other mail clients  
> are displaying these mails correctly.
>
> Kind regards
> Joerg
>
> - -- The beginning is the most important part of the work.
> 				-Plato
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v2.0.19 (FreeBSD)
>
> iD8DBQFQ0yEwSPOsGF+KA+MRAlwsAKCCIHaqIKFj7kvZ5wF9Q5lwdXizzQCgyoLa
> HD/QWrTnYOBl9Lcj2CCNPh0=
> =YNnU
> -----END PGP SIGNATURE-----
>
I had a feeling it was regex related which was the reason for my last  
commit.  However it appears the problem is with the expression in  
Horde_String::validUtf8. This is most likely the same issue described  
in Bug: 11899.

mike

Sent from mobile

Joerg Pulz <Joerg.Pulz at frm2.tum.de> wrote:





More information about the dev mailing list