View Issue Details

IDProjectCategoryView StatusLast Update
0030132RunnerGeneralPublic2019-05-10 13:15
ReporterDanAssigned ToDavid Clarke 
PriorityMediumSeverityA - Crash/HangReproducibility100%
Status ClosedResolutionFixed 
Platform-OSWindows 10OS VersionPro x64
Product Version2.2.0 
Target VersionFixed in Version 
Summary0030132: General: Emojis in strings cause runner crash when string is modified and then used again
DescriptionWhen a string contains (and most notably, ends with) a 4 byte character such as most unicode emojis (for example: �) and is modified by string_delete or seemingly any other string function that returns a modified string, the 4 byte character is deformed in an unknown way and partly replaced with other memory contents. This can occasionally cause a silent runner crash with no freeze or error depending on the contents of the memory.

If the string is drawn in game, or read in the debugger the effect is very clear.

This code:
https://i.imgur.com/2Ek7cLY.png

Generates this result:
https://i.imgur.com/fTifwrM.png
Steps To Reproduce1. Run the attached sample.
2. Observe game crashes after a couple of seconds.
Repro: 100% - IDE v2.2.1.353 Runtime v2.2.1.266
TagsNo tags attached.
1.4 Found In
2.x Runtime Found In2.2.0.261
2.x Runtime Verified In9.9.1.1436

Activities

Dan

2018-10-24 11:55

Adminstrator  

EmojiCrash.png (66,716 bytes)
EmojiCrash.png (66,716 bytes)
bugtest.yyz (16,896 bytes)

Mike Dailly

2018-10-30 15:54

Developer   ~0061905

Actually a really big change. yywchar type inside the runner has to change from a ushort to a uint. This is a massive change, a massive number of functions are affected.

Functions like F_YoYo_SHA1Unicode() would need to detect larger characters and encode the SHA1 differently based on the string passed in, as 4 byte UTF-8's are now 21bits, not 16.

So deferring for now, until we have more time to test.

https://www.fileformat.info/info/unicode/utf8.htm

Dan

2018-10-31 11:09

Adminstrator   ~0061916

Another issue with this is when emojis are typed in virtual keyboards - there's accordingly no way to test if an emoji has been typed. Added a sample from a ticket.

Dan

2018-10-31 11:09

Adminstrator  

GmEmojiTest.yyz (74,226 bytes)

David Clarke

2019-04-02 09:25

Developer   ~0063572

Last edited: 2019-04-02 09:25

View 2 revisions

Booted project with current runner in Red, ran the project and observed no crashing occurred with characters of any width. The windows 10 emoji picker even worked as an input method, allowing me to test those.

Resolved in Gitlab.