[Xposed General] Tardeaux:
Tried reinstalling Google Play Services as described earlier in the thread, but that didn't do anything for WeChat.

Here's what I could capture from the logcat of WeChat failing to launch:

I/PeopleStripeProcessMonitor( 4969): onForegroundActivitiesChanged pid:32148 uid : 10338 foregroundActivities:true
I/InjectionManager(32148): Inside getClassLibPath caller
I/InjectionManagerService -AppFeature( 4462): getCoreFeaturePkgList :[]
I/InjectionManager(32148): Inside getClassLibPath + mLibMap{0=, 1=}
W/ResourcesManager(32148): Asset path '/system/framework/com.google.android.maps.jar' does not exist or contains no resources.
W/ResourcesManager(32148): Asset path '/system/framework/multiwindow.jar' does not exist or contains no resources.
I/PeopleStripeVisibilityController( 4969): handleMessage : msg.what = 1
I/PeopleStripeVisibilityController( 4969): updateStripeVisible : mState = 1visibility = 0
I/PeopleStripeProcessMonitor( 4969): isHomePackageRunning topPkgName = com.tencent.mm
I/PeopleStripeManager( 4969): hideStripe
I/SurfaceFlinger( 3008): id=2282 Removed QeopleStrip (10/10)
I/SurfaceFlinger( 3008): id=2282 Removed QeopleStrip (-2/10)
I/CocktailPhoneWindowManager( 4462): mTmpCocktailBar frame: Rect(0, 0 - 160, 2560)
E/ActivityThread(32148): Failed to find provider info for com.tencent.mm.coolassist.debugprovider
W/MicroMsg.xlogger(32148): JNI_Xlog_onCreate
W/jni crash monitor(32148): JNI_OnLoad
W/System.err(32148): remove failed: ENOENT (No such file or directory) : /data/data/com.tencent.mm/files/fileop_mapping
W/ActivityManager( 4462): getTasks: caller 10338 does not hold GET_TASKS; limiting output
I/InjectionManager(32148): Constructor com.tencent.mm, Feature store :{}
I/InjectionManager(32148): featureStore :{}
W/ActivityManager( 4462): getTasks: caller 10338 does not hold GET_TASKS; limiting output
I/OggExtractor( 3025): OggSource::eek:ggSource() mExtractor ref count = 4
I/AnotherPacketSource( 3025): setFormat() audio
I/GenericSource( 3025): NuPlayer Ormode enabled
I/GenericSource( 3025): start
I/NuSecMediaClock( 3025): NuSecMediaClock constructor
I/NuSecMediaClock( 3025): reset
I/NuSecMediaClock( 3025): init success
I/NuSecMediaClock( 3025): setClockMargin mMinClockModificationCondition (70000), mMaxClockCorrection (30000)
I/NuPlayerRenderer( 3025): setParamForMediaClock() out
I/NuPlayerRenderer( 3025): setDuration (362187)
I/ACodec ( 3025): [] Now uninitialized
I/ACodec ( 3025): >>> getPortFormat 16, OMX.google.vorbis.decoder
I/ACodec ( 3025): [OMX.google.vorbis.decoder] Now Executing
I/ACodec ( 3025): [OMX.google.vorbis.decoder] Now Executing
I/ACodec ( 3025): >>> getPortFormat 16, OMX.google.vorbis.decoder
I/NuPlayerDecoder( 3025): End of Stream
I/NuPlayerDecoder( 3025): Set EOS for DRM
I/NuPlayerDecoder( 3025): End of Stream
I/NuPlayerDecoder( 3025): Set EOS for DRM
I/NuPlayerDecoder( 3025): openAudioSink_l
I/NuPlayerRenderer( 3025): openAudioSink: offloadOnly(0) offloadingAudio(0)
I/NuPlayerRenderer( 3025): openAudioSink: open AudioSink in NON-offload mode audioFormat : 1, flags : 0
I/NuPlayerRenderer( 3025): use bufferCount 4
I/NuSecMediaClock( 3025): reset
I/NuPlayerRenderer( 3025): setAudioFirstAnchorTimeIfNeeded mAudioFirstAnchorTimeMediaUs : -1, new mediaTimeUs : 13061
I/NuPlayerRenderer( 3025): onQueueEOS audio finalResult : -1011
I/NuPlayerRenderer( 3025): [audio] notifyEOS() End of Stream, delayUs : 1
I/GenericSource( 3025): mDRMEOS is true, check with -1
I/NuPlayerRenderer( 3025): onPause
I/NuPlayerRenderer( 3025): flush audio, notifyComplete 1, shutdown Yes
I/NuPlayerRenderer( 3025): flushing audio
I/ACodec ( 3025): [OMX.google.vorbis.decoder] signalFlush
I/NuPlayerRenderer( 3025): onFlush mAudioQueueGeneration : 2
I/ACodec ( 3025): [OMX.google.vorbis.decoder] ExecutingState flushing now (codec owns 0/4 input, 1/4 output).
I/ACodec ( 3025): [OMX.google.vorbis.decoder] Now Flushing
I/ACodec ( 3025): [OMX.google.vorbis.decoder] FlushingState onOMXEvent(0,1,0)
I/ACodec ( 3025): [OMX.google.vorbis.decoder] FlushingState onOMXEvent(0,1,1)
I/ACodec ( 3025): [OMX.google.vorbis.decoder] Now Executing
I/ACodec ( 3025): [OMX.google.vorbis.decoder] Now uninitialized
I/NuSecMediaClock( 3025): NuSecMediaClock destructor
I/OggExtractor( 3025): OggSource::stop() mExtractor ref count = 2
I/OggExtractor( 3025): ~OggSource --
I/OggExtractor( 3025): ~OggExtractor ++
I/OggExtractor( 3025): ~MyVorbisExtractor ++
I/OggExtractor( 3025): ~MyVorbisExtractor --
I/OggExtractor( 3025): ~OggExtractor --
I/crash (32148): before unwind signal thread
I/crash (32148): after unwind signal thread
I/Zygote ( 3052): Process 32148 exited due to signal (11)
I/ActivityManager( 4462): Process com.tencent.mm (pid 32148)(adj 0) has died(186,288)
I/PeopleStripeProcessMonitor( 4969): onProcessDied pid = 32148 uid = 10338
E/ActivityManager( 4462): checkUser: useridlist=null, currentuser=0
E/ActivityManager( 4462): checkUser: useridlist=null, currentuser=0
E/ActivityManager( 4462): checkUser: useridlist=null, currentuser=0
E/ActivityManager( 4462): checkUser: useridlist=null, currentuser=0
E/Zygote (32190): MountEmulatedStorage()
E/Zygote (32190): v2
I/libpersona(32190): KNOX_SDCARD checking this for 10338
I/libpersona(32190): KNOX_SDCARD not a persona
I/SELinux (32190): Function: selinux_compare_spd_ram , priority [2] , priority version is VE=SEPF_SM-G920P_5.1.1_0017
E/SELinux (32190): [DEBUG] get_category: variable seinfo: default sensitivity: NULL, cateogry: NULL
I/ActivityManager( 4462): Start proc 32190:com.tencent.mm/u0a338 for activity com.tencent.mm/.ui.LauncherUI
I/art ( 3052): Explicit concurrent mark sweep GC freed 713(30KB) AllocSpace objects, 0(0B) LOS objects, 36% free, 28MB/44MB, paused 182us total 9.966ms
I/art ( 3052): Explicit concurrent mark sweep GC freed 5(160B) AllocSpace objects, 0(0B) LOS objects, 36% free, 28MB/44MB, paused 183us total 9.800ms
I/PeopleStripeProcessMonitor( 4969): onForegroundActivitiesChanged pid:32190 uid : 10338 foregroundActivities:true
I/InjectionManager(32190): Inside getClassLibPath caller
I/art ( 3052): Explicit concurrent mark sweep GC freed 5(160B) AllocSpace objects, 0(0B) LOS objects, 36% free, 28MB/44MB, paused 189us total 9.888ms
I/InjectionManagerService -AppFeature( 4462): getCoreFeaturePkgList :[]
I/InjectionManager(32190): Inside getClassLibPath + mLibMap{0=, 1=}
W/ResourcesManager(32190): Asset path '/system/framework/com.google.android.maps.jar' does not exist or contains no resources.
W/ResourcesManager(32190): Asset path '/system/framework/multiwindow.jar' does not exist or contains no resources.
E/ActivityThread(32190): Failed to find provider info for com.tencent.mm.coolassist.debugprovider
W/MicroMsg.xlogger(32190): JNI_Xlog_onCreate
W/jni crash monitor(32190): JNI_OnLoad
W/System.err(32190): remove failed: ENOENT (No such file or directory) : /data/data/com.tencent.mm/files/fileop_mapping
W/ActivityManager( 4462): getTasks: caller 10338 does not hold GET_TASKS; limiting output
I/InjectionManager(32190): Constructor com.tencent.mm, Feature store :{}
I/InjectionManager(32190): featureStore :{}
I/OggExtractor( 3025): OggSource::eek:ggSource() mExtractor ref count = 4
I/AnotherPacketSource( 3025): setFormat() audio
I/GenericSource( 3025): NuPlayer Ormode enabled
I/GenericSource( 3025): start
I/NuSecMediaClock( 3025): NuSecMediaClock constructor
I/NuSecMediaClock( 3025): reset
I/NuSecMediaClock( 3025): init success
I/NuSecMediaClock( 3025): setClockMargin mMinClockModificationCondition (70000), mMaxClockCorrection (30000)
I/NuPlayerRenderer( 3025): setParamForMediaClock() out
I/NuPlayerRenderer( 3025): setDuration (362187)
W/ActivityManager( 4462): getTasks: caller 10338 does not hold GET_TASKS; limiting output
I/ACodec ( 3025): [] Now uninitialized
I/ACodec ( 3025): >>> getPortFormat 16, OMX.google.vorbis.decoder
I/ACodec ( 3025): [OMX.google.vorbis.decoder] Now Executing
I/ACodec ( 3025): [OMX.google.vorbis.decoder] Now Executing
I/ACodec ( 3025): >>> getPortFormat 16, OMX.google.vorbis.decoder
I/NuPlayerDecoder( 3025): End of Stream
I/NuPlayerDecoder( 3025): Set EOS for DRM
I/NuPlayerDecoder( 3025): End of Stream
I/NuPlayerDecoder( 3025): Set EOS for DRM
I/NuPlayerDecoder( 3025): openAudioSink_l
I/NuPlayerRenderer( 3025): openAudioSink: offloadOnly(0) offloadingAudio(0)
I/NuPlayerRenderer( 3025): openAudioSink: open AudioSink in NON-offload mode audioFormat : 1, flags : 0
I/NuPlayerRenderer( 3025): use bufferCount 4
I/NuSecMediaClock( 3025): reset
I/NuPlayerRenderer( 3025): setAudioFirstAnchorTimeIfNeeded mAudioFirstAnchorTimeMediaUs : -1, new mediaTimeUs : 13061
I/NuPlayerDecoder( 3025): End of Stream
I/NuPlayerDecoder( 3025): Set EOS for DRM
I/NuPlayerRenderer( 3025): onQueueEOS audio finalResult : -1011
I/NuPlayerRenderer( 3025): [audio] notifyEOS() End of Stream, delayUs : 1
I/GenericSource( 3025): mDRMEOS is true, check with -1
I/NuPlayerRenderer( 3025): onPause
I/NuPlayerRenderer( 3025): flush audio, notifyComplete 1, shutdown Yes
I/ACodec ( 3025): [OMX.google.vorbis.decoder] signalFlush
I/NuPlayerRenderer( 3025): flushing audio
I/ACodec ( 3025): [OMX.google.vorbis.decoder] ExecutingState flushing now (codec owns 0/4 input, 2/4 output).
I/NuPlayerRenderer( 3025): onFlush mAudioQueueGeneration : 2
I/ACodec ( 3025): [OMX.google.vorbis.decoder] Now Flushing
I/ACodec ( 3025): [OMX.google.vorbis.decoder] FlushingState onOMXEvent(0,1,0)
I/ACodec ( 3025): [OMX.google.vorbis.decoder] FlushingState onOMXEvent(0,1,1)
I/ACodec ( 3025): [OMX.google.vorbis.decoder] Now Executing
I/ACodec ( 3025): [OMX.google.vorbis.decoder] Now uninitialized
I/NuSecMediaClock( 3025): NuSecMediaClock destructor
I/OggExtractor( 3025): OggSource::stop() mExtractor ref count = 2
I/OggExtractor( 3025): ~OggSource --
I/OggExtractor( 3025): ~OggExtractor ++
I/OggExtractor( 3025): ~MyVorbisExtractor ++
I/OggExtractor( 3025): ~MyVorbisExtractor --
I/OggExtractor( 3025): ~OggExtractor --
I/crash (32190): before unwind signal thread
I/crash (32190): after unwind signal thread
I/PeopleStripeVisibilityController( 4969): handleMessage : msg.what = 1
I/PeopleStripeVisibilityController( 4969): updateStripeVisible : mState = 1visibility = 0
I/PeopleStripeProcessMonitor( 4969): isHomePackageRunning topPkgName = com.tencent.mm
I/PeopleStripeManager( 4969): hideStripe
I/Zygote ( 3052): Process 32190 exited due to signal (11)
I/ActivityManager( 4462): Process com.tencent.mm (pid 32190)(adj 0) has died(185,288)
I/PeopleStripeProcessMonitor( 4969): onProcessDied pid = 32190 uid = 10338
E/ActivityManager( 4462): checkUser: useridlist=null, currentuser=0
E/ActivityManager( 4462): checkUser: useridlist=null, currentuser=0
E/ActivityManager( 4462): checkUser: useridlist=null, currentuser=0
E/ActivityManager( 4462): checkUser: useridlist=null, currentuser=0
E/Zygote (32232): MountEmulatedStorage()
E/Zygote (32232): v2
I/libpersona(32232): KNOX_SDCARD checking this for 10338
I/libpersona(32232): KNOX_SDCARD not a persona
I/SELinux (32232): Function: selinux_compare_spd_ram , priority [2] , priority version is VE=SEPF_SM-G920P_5.1.1_0017
E/SELinux (32232): [DEBUG] get_category: variable seinfo: default sensitivity: NULL, cateogry: NULL
I/ActivityManager( 4462): Start proc 32232:com.tencent.mm/u0a338 for activity com.tencent.mm/.ui.LauncherUI
I/PeopleStripeProcessMonitor( 4969): onForegroundActivitiesChanged pid:32232 uid : 10338 foregroundActivities:true
I/InjectionManager(32232): Inside getClassLibPath caller
I/InjectionManagerService -AppFeature( 4462): getCoreFeaturePkgList :[]
I/InjectionManager(32232): Inside getClassLibPath + mLibMap{0=, 1=}
W/ResourcesManager(32232): Asset path '/system/framework/com.google.android.maps.jar' does not exist or contains no resources.
W/ResourcesManager(32232): Asset path '/system/framework/multiwindow.jar' does not exist or contains no resources.
E/ActivityThread(32232): Failed to find provider info for com.tencent.mm.coolassist.debugprovider
W/MicroMsg.xlogger(32232): JNI_Xlog_onCreate
W/jni crash monitor(32232): JNI_OnLoad
W/System.err(32232): remove failed: ENOENT (No such file or directory) : /data/data/com.tencent.mm/files/fileop_mapping
W/ActivityManager( 4462): getTasks: caller 10338 does not hold GET_TASKS; limiting output
I/InjectionManager(32232): Constructor com.tencent.mm, Feature store :{}
I/InjectionManager(32232): featureStore :{}
I/OggExtractor( 3025): OggSource::eek:ggSource() mExtractor ref count = 4
I/AnotherPacketSource( 3025): setFormat() audio
I/GenericSource( 3025): NuPlayer Ormode enabled
W/ActivityManager( 4462): getTasks: caller 10338 does not hold GET_TASKS; limiting output
I/GenericSource( 3025): start
I/NuSecMediaClock( 3025): NuSecMediaClock constructor
I/NuSecMediaClock( 3025): reset
I/NuSecMediaClock( 3025): init success
I/NuSecMediaClock( 3025): setClockMargin mMinClockModificationCondition (70000), mMaxClockCorrection (30000)
I/NuPlayerRenderer( 3025): setParamForMediaClock() out
I/NuPlayerRenderer( 3025): setDuration (362187)
I/ACodec ( 3025): [] Now uninitialized
I/ACodec ( 3025): >>> getPortFormat 16, OMX.google.vorbis.decoder
I/ACodec ( 3025): [OMX.google.vorbis.decoder] Now Executing
I/ACodec ( 3025): [OMX.google.vorbis.decoder] Now Executing
I/ACodec ( 3025): >>> getPortFormat 16, OMX.google.vorbis.decoder
I/NuPlayerDecoder( 3025): openAudioSink_l
I/NuPlayerRenderer( 3025): openAudioSink: offloadOnly(0) offloadingAudio(0)
I/NuPlayerRenderer( 3025): openAudioSink: open AudioSink in NON-offload mode audioFormat : 1, flags : 0
I/NuPlayerRenderer( 3025): use bufferCount 4
I/NuSecMediaClock( 3025): reset
I/NuPlayerRenderer( 3025): setAudioFirstAnchorTimeIfNeeded mAudioFirstAnchorTimeMediaUs : -1, new mediaTimeUs : 13061
I/NuPlayerDecoder( 3025): End of Stream
I/NuPlayerDecoder( 3025): Set EOS for DRM
I/NuPlayerDecoder( 3025): End of Stream
I/NuPlayerDecoder( 3025): Set EOS for DRM
I/NuPlayerDecoder( 3025): End of Stream
I/NuPlayerDecoder( 3025): Set EOS for DRM
I/NuPlayerDecoder( 3025): End of Stream
I/NuPlayerDecoder( 3025): Set EOS for DRM
I/NuPlayerRenderer( 3025): onQueueEOS audio finalResult : -1011
I/NuPlayerRenderer( 3025): [audio] notifyEOS() End of Stream, delayUs : 0
I/GenericSource( 3025): mDRMEOS is true, check with -1
I/NuPlayerRenderer( 3025): onPause
I/NuPlayerRenderer( 3025): flush audio, notifyComplete 1, shutdown Yes
I/ACodec ( 3025): [OMX.google.vorbis.decoder] signalFlush
I/NuPlayerRenderer( 3025): flushing audio
I/ACodec ( 3025): [OMX.google.vorbis.decoder] ExecutingState flushing now (codec owns 0/4 input, 1/4 output).
I/NuPlayerRenderer( 3025): onFlush mAudioQueueGeneration : 2
I/ACodec ( 3025): [OMX.google.vorbis.decoder] Now Flushing
I/ACodec ( 3025): [OMX.google.vorbis.decoder] FlushingState onOMXEvent(0,1,0)
I/ACodec ( 3025): [OMX.google.vorbis.decoder] FlushingState onOMXEvent(0,1,1)
I/ACodec ( 3025): [OMX.google.vorbis.decoder] Now Executing
I/ACodec ( 3025): [OMX.google.vorbis.decoder] Now uninitialized
I/NuSecMediaClock( 3025): NuSecMediaClock destructor
I/OggExtractor( 3025): OggSource::stop() mExtractor ref count = 2
I/OggExtractor( 3025): ~OggSource --
I/OggExtractor( 3025): ~OggExtractor ++
I/OggExtractor( 3025): ~MyVorbisExtractor ++
I/OggExtractor( 3025): ~MyVorbisExtractor --
I/OggExtractor( 3025): ~OggExtractor --
I/crash (32232): before unwind signal thread
I/crash (32232): after unwind signal thread
I/PeopleStripeVisibilityController( 4969): handleMessage : msg.what = 1
I/PeopleStripeVisibilityController( 4969): updateStripeVisible : mState = 1visibility = 0
I/PeopleStripeProcessMonitor( 4969): isHomePackageRunning topPkgName = com.tencent.mm
I/PeopleStripeManager( 4969): hideStripe
I/Zygote ( 3052): Process 32232 exited due to signal (11)
I/ActivityManager( 4462): Process com.tencent.mm (pid 32232)(adj 0) has died(184,288)
I/PeopleStripeProcessMonitor( 4969): onProcessDied pid = 32232 uid = 10338
W/ActivityManager( 4462): Force removing ActivityRecord{1ccddfc3 u0 com.tencent.mm/.ui.LauncherUI t629}: app died, no saved state