Hmm, that's a weird place to crash. I doubt that this has anything to do with 32-bit vs 64-bit. It looks like memory corruption. Perhaps an uninitialized variable or a use-after-free. I suggest trying to run your code with Asan (https://github.com/google/sanitizers/wiki/AddressSanitizer) and Msan (https://github.com/google/sanitizers/wiki/MemorySanitizer), both natively available on Ubuntu, they tend to be good at finding this kind of issues (we use them quite a bit when we're working on Mbed TLS, as well as in our CI).

Best regards,

--
Gilles Peskine
Mbed TLS developer

On 26/04/2024 19:05, blaine via mbed-tls wrote:
    hello:
   Recently, I am transplanting mbedtls from a 32-bit system to a 64-bit system. The compilation operating system is ubuntu20.4. The screenshot below is the code I use mbedtls(version number: 2.24.0). In the API mbedtls_rsa_gen_key implementation, there is a line of code that is ""MBEDTLS_MPI_CHK( mbedtls_mpi_lset( &ctx ->E, exponent ) );"", the program crashed at the memset in mbedtls_mpi_set during execution. This has not happened on 32-bit platforms before, so I would like to ask whether it has something to do with the platform used or whether I call the API. It’s a question about how to use it, thank you very much