View Issue Details

IDProjectCategoryView StatusLast Update
0002495NoesisGUIUnity3Dpublic2023-02-14 12:05
Reporterstonstad Assigned Tosfernandez  
PrioritynormalSeveritycrashReproducibilityalways
Status resolvedResolutionfixed 
Product Version3.1.5 
Target Version3.1.7Fixed in Version3.1.7 
Summary0002495: Texture Corruption Built Assembly
DescriptionThis is a revival of the prior bug concerning runtime corruption of textures imported and used in Noesis due to an issue with texture pointers. This time, the bug manifests in built Unity players. I tried reimporting all UI textures and assets. While that previously fixed the issue in the editor, the issue manifests in all builds. It's an instant crash for the game's player.

Encl. crash.dmp
Encl. player.log
Encl. screenshot of texture corruption.
Steps To ReproduceEncl. crash.dmp
Encl. player.log
Encl. screenshot of texture corruption.
TagsNo tags attached.
PlatformAny

Relationships

related to 0002453 resolvedsfernandez DragEventArgs_GetAllowedEffectsHelper Crash 
related to 0002496 resolvedsfernandez NoesisViewEditor.OnPreviewGUI Crash 

Activities

stonstad

stonstad

2023-01-19 20:35

reporter  

Stellar Conquest.zip (87,027 bytes)
Textures Corruption.jpg (1,235,147 bytes)
stonstad

stonstad

2023-01-19 22:50

reporter   ~0008232

Just adding a note here that with this particular bug, it isn't possible to create a working Unity player. I'm available to perform any/all troubleshooting necessary to resolve this issue, as it is a release blocker. Thanks.
stonstad

stonstad

2023-01-19 22:53

reporter   ~0008233

The original issue w/ detail is here: https://www.noesisengine.com/bugs/view.php?id=2453

I tried a fresh Unity build but that did not work. This is happening in Unity 2022.2.1f1.
jsantos

jsantos

2023-01-20 11:48

manager   ~0008235

Is this using D3D12?
stonstad

stonstad

2023-01-20 14:45

reporter   ~0008238

Initialize engine version: 2022.2.1f1 (4fead5835099)
Direct3D:
    Version: Direct3D 11.0 [level 11.1]
    Renderer: NVIDIA GeForce RTX 4080 (ID=0x2704)
    Vendor: NVIDIA
    VRAM: 16064 MB
    Driver: 31.0.15.2802
stonstad

stonstad

2023-01-21 22:17

reporter   ~0008239

I think this raises an important question -- what is it that I am doing that is different, even potentially incorrect compared to other Noesis users?

1. Is it specific to Unity version, meaning that other Noesis users have not released a build using Unity 2022.2.x or later?
2. Is it due to the quantity and type of images I am referencing in my image resource dictionaries?
3. Is it a Unity bug that manifests rarely?

Jesus, should I run the scirpt the looks for texture pointer changes again, and have it dump to the log file within a build executable?
jsantos

jsantos

2023-01-24 18:31

manager   ~0008240

So far, I don't know why this is happening on your project and not in others projects.

I have been testing different scenarios today, I am unable to break anything (even using hundreds of textures).

So, first thing we need to do is making sure we are in the same scenario as 0002453, so yes, please, run the script to search for pointer changes and let's focus in one texture only for now.
jsantos

jsantos

2023-01-24 18:31

manager   ~0008241

Are you using more plugins that could interfering with us?
stonstad

stonstad

2023-01-25 00:00

reporter   ~0008242

I'm not aware of any plugins that might affect texture handles. I'll run the previous script and report back here.
stonstad

stonstad

2023-01-27 16:19

reporter   ~0008243

I'm working on this right now and I have some questions that might help me better identify a cause.

- When is the texture memory address assigned? i.e. is this a real memory address that is assigned upon load to GPU memory, or is this a Unity handle assigned on import?
- If the address is loaded incorrectly from the start, would I be able to detect a change?
- These textures currently exist in a folder within assets. They are not in \Resources, and they are not part of an asset bundle. Is this OK?
- Is there a way to get the texture handle from a Noesis ImageSource? This would let me cycle through all textures used in the UI and scan for handle changes.
stonstad

stonstad

2023-01-27 16:54

reporter   ~0008244

The texture pointer does not appear to be changed -- but incorrect textures are shown. i.e. instead of a weapon I see a player's hat as a rectangle's image source.

Is there a way to reliably iterate through the resources in a resource dictionary?
stonstad

stonstad

2023-01-27 17:07

reporter   ~0008245

Your answers to these questions will definitely help me out. In the interim, I am going to send over a stripped down project.
stonstad

stonstad

2023-01-27 20:21

reporter   ~0008246

OK, the problem only manifests when images are created within a visual tree containing a top-level ViewBox which is programmatically sized. Still researching.
stonstad

stonstad

2023-01-27 20:25

reporter   ~0008247

Last edited: 2023-01-27 20:47

This is likely not a Unity pointer issue. I think it is related to Noesis pointer arithmetic and how images (and underlying textures) are displayed in a visual tree with a transformation matrix.

My reproduction workflow is to have a visual tree with the following:

NoesisView -> UserControl -> ViewBox -> CustomUserControl -> WrapPanel -> { 100 Rectangles }

- CustomUserControl sets its width/height based on a desired size and scaling ratio. I don't use Noesis scaling because it wasn't available when I built my UI.
- If the rectangles have no brush set the compiled binary does NOT crash
- If the rectangles are assigned textures the compiled binary DOES crash. This occurs in the editor, sometimes. However, it is consistent in binaries.
- It appears that if the wrap panel does not exceed a certain dimension a crash does not occur.

** edit. This is not it. I have no idea why it selectively fails.
jsantos

jsantos

2023-01-28 02:01

manager   ~0008249

Thanks for the time creating this repro!
stonstad

stonstad

2023-01-30 22:56

reporter   ~0008252

Were you able to reproduce the behavior with the test project?
stonstad

stonstad

2023-01-31 13:54

reporter   ~0008253

It appears that disabling mipmap generation stops texture commingling and crashes.
jsantos

jsantos

2023-02-02 17:59

manager   ~0008256

We have been extremely busy with 3.2 Beta2 (planned for releasing today).

After that, we will start testing your project.

Thanks for your patience
sfernandez

sfernandez

2023-02-03 21:09

manager   ~0008258

I'm working on your repro project, building the player with our library in debug.
Let's see if this provides some useful info.

I'll keep you informed.

Issue History

Date Modified Username Field Change
2023-01-19 20:35 stonstad New Issue
2023-01-19 20:35 stonstad File Added: Stellar Conquest.zip
2023-01-19 20:35 stonstad File Added: Textures Corruption.jpg
2023-01-19 22:50 stonstad Note Added: 0008232
2023-01-19 22:53 stonstad Note Added: 0008233
2023-01-20 11:45 jsantos Relationship added related to 0002453
2023-01-20 11:48 jsantos Assigned To => jsantos
2023-01-20 11:48 jsantos Status new => assigned
2023-01-20 11:48 jsantos Note Added: 0008235
2023-01-20 11:52 jsantos Target Version => 3.1.7
2023-01-20 11:53 jsantos Status assigned => feedback
2023-01-20 14:45 stonstad Note Added: 0008238
2023-01-20 14:45 stonstad Status feedback => assigned
2023-01-21 22:17 stonstad Note Added: 0008239
2023-01-24 18:31 jsantos Note Added: 0008240
2023-01-24 18:31 jsantos Status assigned => feedback
2023-01-24 18:31 jsantos Note Added: 0008241
2023-01-25 00:00 stonstad Note Added: 0008242
2023-01-25 00:00 stonstad Status feedback => assigned
2023-01-27 16:19 stonstad Note Added: 0008243
2023-01-27 16:54 stonstad Note Added: 0008244
2023-01-27 17:07 stonstad Note Added: 0008245
2023-01-27 20:21 stonstad Note Added: 0008246
2023-01-27 20:25 stonstad Note Added: 0008247
2023-01-27 20:31 stonstad Note Edited: 0008247
2023-01-27 20:44 stonstad Note Edited: 0008247
2023-01-27 20:47 stonstad Note Edited: 0008247
2023-01-28 02:01 jsantos Note Added: 0008249
2023-01-28 02:01 jsantos Assigned To jsantos => sfernandez
2023-01-30 22:56 stonstad Note Added: 0008252
2023-01-31 13:54 stonstad Note Added: 0008253
2023-02-02 17:59 jsantos Note Added: 0008256
2023-02-03 21:09 sfernandez Note Added: 0008258
2023-02-08 14:38 sfernandez Status assigned => resolved
2023-02-08 14:38 sfernandez Resolution open => fixed
2023-02-08 14:38 sfernandez Fixed in Version => 3.1.7
2023-02-14 12:05 sfernandez Relationship added related to 0002496