Search Issue Tracker

Won't Fix

Votes

0

Found in

2022.3.45f1

6000.0.19f1

Issue ID

UUM-82353

Regression

No

Build fails with cast error when building Linux Player

--

-

Reproduction steps:
1. Open the attached “BugRepro” project
2. Click File > Build Settings…
3. Select the Linux target
4. Build the project

Expected results: The project is built successfully
Actual results: Build fails with error “cast from pointer to smaller type 'int32_t' (aka 'int') loses information“

Reproduced with: 2022.2.0a18, 2022.3.45f1, 6000.0.19f1
Can’t reproduce with: 2021.3.43f1, 2022.2.0a17 (Can’t downgrade project)

Reproduced on: Windows 10, Ubuntu 22.04
Not reproduced on: No other environment tested

Note: The Mono version builds successfully

Full error:
Building Library\Bee\artifacts\LinuxPlayerBuildProgram\zbz95\jyalehvu9tx2.o failed with output:
C:\Project\Library\Bee\artifacts\LinuxPlayerBuildProgram\il2cppOutput\cpp\GenericMethods.cpp:28119:10: error: cast from pointer to smaller type 'int32_t' (aka 'int') loses information
return (int32_t)L_0;
^~~~~~~~~~~~
1 error generated.

UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

  1. Resolution Note:

    Project provided contains invalid IL. There is a generic method that is attempting to cast an enum to an int32.

    IL_0000: ldarg.0 // This is a generic value type of variable size.
    IL_000b: ret // Attempting to return an int32

    Changing the IL to the following 4 lines....

    ldarga.s 0
    conv.u
    ldind.i4
    ret

    will achieve the same result with valid IL.

Comments (1)

  1. Hadow

    Oct 21, 2024 13:55

    How to modify the IL code? Can you explain the steps in detail?

Add comment

Log in to post comment

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.