Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. We have updated the language to the Editor Terms based on feedback from our employees and community. Learn more.
    Dismiss Notice

TextMesh Pro TMPro StackOverflow caused by TMPro.TextMeshProUGUI.GenerateTextMesh()

Discussion in 'UGUI & TextMesh Pro' started by MrLucid72, Sep 25, 2019.

  1. livingtarget

    livingtarget

    Joined:
    Apr 21, 2015
    Posts:
    66
    How stable is this release I need to deploy this immediately to the Android App Store. I will check if it fixes it.
     
  2. livingtarget

    livingtarget

    Joined:
    Apr 21, 2015
    Posts:
    66
    The new version definitely fixes the overflow case.
     
  3. livingtarget

    livingtarget

    Joined:
    Apr 21, 2015
    Posts:
    66
    I'm now seeing the following for some text:
    Code (CSharp):
    1. NullReferenceException: Object reference not set to an instance of an object
    2. TMPro.TextMeshProUGUI.GenerateTextMesh () (at Library/PackageCache/com.unity.textmeshpro@1.5.0-preview.1/Scripts/Runtime/TMPro_UGUI_Private.cs:2182)
    3. TMPro.TextMeshProUGUI.OnPreRenderCanvas () (at Library/PackageCache/com.unity.textmeshpro@1.5.0-preview.1/Scripts/Runtime/TMPro_UGUI_Private.cs:1665)
    4. TMPro.TextMeshProUGUI.Rebuild (UnityEngine.UI.CanvasUpdate update) (at Library/PackageCache/com.unity.textmeshpro@1.5.0-preview.1/Scripts/Runtime/TextMeshProUGUI.cs:209)
    5. UnityEngine.UI.CanvasUpdateRegistry.PerformUpdate () (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/CanvasUpdateRegistry.cs:198)
    6. UnityEngine.Canvas:SendWillRenderCanvases()
    7.  
    Do you need a repro?

    Layout also recalculates constantly for a bit.
     
    Last edited: Oct 8, 2019
  4. Stephan_B

    Stephan_B

    Unity Technologies

    Joined:
    Feb 26, 2017
    Posts:
    6,588
    That would be ideal as this behavior / rapid update is pretty strange.
     
  5. livingtarget

    livingtarget

    Joined:
    Apr 21, 2015
    Posts:
    66
    I have PMed you a repro project. Let me know if you need more.
     
    Stephan_B likes this.
  6. Stephan_B

    Stephan_B

    Unity Technologies

    Joined:
    Feb 26, 2017
    Posts:
    6,588
    This issue was a NRE on a material reference when the style padding is being computed.

    This was the result of using text Overflow Truncate mode in conjunction with a sprite where the sprite was getting truncated and exactly the 64th character in the text. The relevance of this 64th character is related to internal allocations of buffers being of power of two. Ie. interesting combination of factors to produce this issue.

    Below are the code changes to resolve this issue. The following changes will be in the next release which will be in a few days.

    upload_2019-10-14_16-23-37.png

    upload_2019-10-14_16-24-8.png

    Be sure to make these changes in the Global package cache.
     
  7. Democide

    Democide

    Joined:
    Jan 29, 2013
    Posts:
    315
    Alright, so sorry for necroing this thread but I am suffering from the same issue in my project.

    It's running on 2018.4.23f1. I've updated TextMeshPro to 1.5 Preview 14 but the issue persists even then:

    Code (csharp):
    1. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    2. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    3. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    4. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    5. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    6. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    7. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    8. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    9. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    10. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    11. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    12. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    13. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    14. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    15. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    16. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    17. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    18. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    19. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    20. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    21. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    22. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    23. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    24. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    25. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    26. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    27. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    28. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    29. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    30. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    31. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    32. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    33. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    34. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    35. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    36. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    37. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    38. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    39. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    40. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    41. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    42. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    43. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    44. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    45. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    46. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    47. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    48. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    49. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    50. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    51. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    52. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    53. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    54. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    55. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    56. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    57. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    58. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    59. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    60. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    61. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    62. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    63. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    64. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    65. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    66. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    67. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    68. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    69. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    70. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    71. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    72. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    73. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    74. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    75. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    76. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    77. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    78. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    79. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    80. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    81. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    82. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    83. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    84. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    85. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    86. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    87. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    88. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    89. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    90. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    91. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    92. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    93. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    94. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    95. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    96. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    97. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    98. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    99. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    100. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    101. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    102. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    103. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    104. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    105. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    106. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    107. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    108. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    109. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    110. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    111. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    112. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    113. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    114. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    115. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    116. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    117. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    118. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    119. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    120. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    121. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    122. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    123. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    124. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    125. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    126. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    127. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    128. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    129. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    130. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    131. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    132. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    133. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    134. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    135. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    136. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    137. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    138. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    139. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    140. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    141. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    142. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    143. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    144. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    145. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    146. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    147. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    148. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    149. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    150. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    151. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    152. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    153. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    154. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    155. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    156. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    157. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    158. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    159. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    160. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    161. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    162. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    163. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    164. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    165. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    166. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    167. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    168. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    169. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    170. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    171. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    172. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    173. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    174. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    175. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    176. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    177. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    178. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    179. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    180. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    181. TMPro.TextMeshProUGUI.GenerateTextMesh ()
    182. TMPro.TextMeshProUGUI.OnPreRenderCanvas ()
    183. TMPro.TextMeshProUGUI.Rebuild (CanvasUpdate update)
    184. UnityEngine.UI.CanvasUpdateRegistry.PerformUpdate ()
    185. UnityEngine.Canvas:SendWillRenderCanvases()
    186.  
     
  8. Stephan_B

    Stephan_B

    Unity Technologies

    Joined:
    Feb 26, 2017
    Posts:
    6,588
    I'll need more details to identify the potential source of this behavior.

    I presume you are using auto-size somewhere. What value range are you using? What other settings do you have on those text objects?

    Can you please submit a bug report with included project so I can take a closer look?
     
  9. Democide

    Democide

    Joined:
    Jan 29, 2013
    Posts:
    315
    The project is pretty huge and has text all over the place, which makes pinning down the source of the issue pretty difficult. I have auto-sizing on a large number of the components, generally with a range of 18-24 or something similar. I don't think it ever goes below 18 and can go up to 60 in a few cases
     
  10. Stephan_B

    Stephan_B

    Unity Technologies

    Joined:
    Feb 26, 2017
    Posts:
    6,588
    Are you getting stack overflow errors or just lots of calls to GenerateTextMesh()?
     
  11. Democide

    Democide

    Joined:
    Jan 29, 2013
    Posts:
    315
    I am getting stack overflow errors
     
  12. Stephan_B

    Stephan_B

    Unity Technologies

    Joined:
    Feb 26, 2017
    Posts:
    6,588
    That should no longer be occurring with these more recent previews at recursion was completely removed.

    I realize the project is huge but I need to be able to reproduce this behavior and figure out what might be the cause. If submitting a bug report doesn't work, maybe provide me access via some Private Message or something.

    P.S. Auto-size is a contributing factor here as well as any other auto size adjustments like line spacing. See if you have any text objects using auto-size + line spacing adjustments or width adjustments in the auto-size group.

    P.S.S. I know that you have reported using Preview 14 but just double check in case Package Manager did not install the correct version of the package.
     
  13. Democide

    Democide

    Joined:
    Jan 29, 2013
    Posts:
    315
    The tricky thing is that I'm not reliably getting the issue myself. I'm just frequently getting reports from players and via the unity diagnostics backend. I'll investigate some more.
     
  14. noonoox

    noonoox

    Joined:
    Nov 15, 2014
    Posts:
    14
    Hey there! I'm getting this issue as well. I have a TextMeshPro - Text (UI) component on a child object of a UI image (the background). The NullReferenceException is thrown initially at TMPro.TMP_TextInfo line 207 and afterwards at line 222. This happens regardless of if the parent image has a layout group & content size fitter, and the TMP does not have auto-size or any padding enabled. I want the parent to automatically expand to fit the text in the TMP, and with a normal Text component, having a Content Size Fitter on the child did the job. This error is thrown regardless of if that component is present, as well.

    PS: Error was occurring on TMP v2.01 and v2.10
     
  15. Stephan_B

    Stephan_B

    Unity Technologies

    Joined:
    Feb 26, 2017
    Posts:
    6,588
    Can you export / provide me with a simple scene to reproduce this behavior?
     
  16. noonoox

    noonoox

    Joined:
    Nov 15, 2014
    Posts:
    14
    Hmmm, not sure what was causing the bug, actually. Duplicating the context in a different scene did not trigger errors, so I think it might've just gotten borked in that context