tree 6d9fa3b1ae6316d5b8376ffa73c8e035d62a83dd
parent aeb98f4708f3fa57392ce90ff1272be706588a03
author Chris Bracken <chris@bracken.jp> 1620884623 -0700
committer GitHub <noreply@github.com> 1620884623 -0700
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJgnLyPCRBK7hj4Ov3rIwAAIucIAAmE8N4bukN76vYG4Lc2YItY
 7IL8IR2H1cGhCP8+/ujd06I6FxOSztgMAugIj21D74Mkz57g609l55+W0iy4hUXN
 t5Lcq4cWuWWww8WPNsMQc1PcL9y2XN0t3eanoVryBYi//CYkn0uWdcShOLDhMq3s
 N1ChZPPWYMGbTsmUCvcU1oZHdow1Xo22awjdWXgj3dfY89jaRphOnX39/fXvjTDU
 DoAREoMdBKstnvTgr+cNSC92Q11PwJBdBj/1jzvRxWSVHD3EsmV2lIt3ERuXI7+x
 a7AozATS/4k7qtPLs7fRT5yGkb0U/UdqCCbv2JDuRBIvKczu0O+qvu5Z43ekkq8=
 =yV8K
 -----END PGP SIGNATURE-----
 

Revert "Sped up the objc standard message codec (#25998)" (#26117)

This appears to have triggered reproducible failures in channels_integration_test_ios:

    [   +4 ms] 00:01 [32m+0[0m: channel suite step through[0m
    [+3744 ms] Unsupported value: Sun Mar 11 07:16:42 2018 of type __NSTaggedDate
    [        ] *** Assertion failure in void WriteValue(CFMutableDataRef, id)(), FlutterStandardCodec.mm:340
    [   +2 ms] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Unsupported value for standard codec.'
    [        ] *** First throw call stack:
    [        ] (0x19d5bd9d8 0x1b1940b54 0x19d4cc50c 0x19e815238 0x1050031ec 0x104823f80 0x105003aac 0x1050009bc 0x104824e9c 0x105000b4c 0x104d0cc98 0x10501b398 0x104fb3c94 0x104fb72c4 0x19d53e3e0 0x19d53dfe4 0x19d53d4c4 0x19d537850 0x19d536ba0 0x1b429c598 0x19fe282f4 0x19fe2d874 0x1048257fc 0x19d215568)
    [        ] libc++abi.dylib: terminating with uncaught exception of type NSException
    [  +65 ms] Process 541 stopped
    [        ] * thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
    [        ]     frame #0: 0x00000001c93e584c libsystem_kernel.dylib`__pthread_kill + 8
    [        ] libsystem_kernel.dylib`__pthread_kill:
    [        ] -> 0x1c93e584c <+8>:  b.lo   0x1c93e5868               ; <+36>
    [        ]    0x1c93e5850 <+12>: stp    x29, x30, [sp, #-0x10]!
    [        ]    0x1c93e5854 <+16>: mov    x29, sp
    [        ]    0x1c93e5858 <+20>: bl     0x1c93c2f5c               ; cerror_nocancel
    [        ] Target 0: (Runner) stopped.

Example builds:
* https://ci.chromium.org/ui/p/flutter/builders/prod/Mac_ios%20channels_integration_test_ios/828/overview
* https://ci.chromium.org/ui/p/flutter/builders/prod/Mac_ios%20channels_integration_test_ios/829/overview
* https://ci.chromium.org/ui/p/flutter/builders/prod/Mac_ios%20channels_integration_test_ios/830/overview
* https://ci.chromium.org/ui/p/flutter/builders/prod/Mac_ios%20channels_integration_test_ios/831/overview

Example Log:
* https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket.appspot.com/8847377106855056784/+/u/run_channels_integration_test_ios/stdout

This reverts commit 99021da09058bf7cf0a6743d4bef293450cd0714.