[c api] SU_ERROR_SERIALIZATION

Can we have a bit more information regarding this error:
SU_ERROR_SERIALIZATION if the serialization operation itself fails

It happens in SUModelSaveToFileWithVersion() when trying to create a very large SketchUp file. I’m not sure of the exact size it would be, but probably in the realm of several GBs. Is there a file size limit the SDK can produce?

I bothered Thomas about this last year in a tracking issue …

I suggest you add any other methods where this “serialization” is mentioned.

I suspect it just mean whilst writing to the file’s DOM tree.

One possibility: I see this when I attempt to write a model file that is already open in SketchUp.

In this case, the file doesn’t exist yet.

SU_ERROR_SERIALIZATION is returned if:

  • The target path is not writable
  • The save operation failed (the internal call to save the model yields false. there is no further details given back to the API)

:frowning:

Are you able to provide a simple repro? I can then run it through the debugger and see where it fails.

No, we’re able to reproduce it only with a single large FBX model loaded in Transmutr

If I provide a Transmutr license and the model, can you run the debugger?

I can try.

Does the C API contain debug symbols?

Afraid we cannot distribute that - would expose too much of our internals.

Ok, so I guess the debugger won’t tell you much…

If you still want to try, I believe you have a Transmutr license. PM me if you can’t find it.

The model is here: https://forums.lindale.io/t/cant-get-a-sketchup-file-generated-from-this-model/1917

Does it help if I give you a version of Transmutr with our own debug symbols?

Oh I just realized, you can swap DLLs?
In Transmutr, SketchUpAPI.dll is located in:

  • C:\Program Files\Transmutr\resources\app.asar.unpacked\_webpack if installed “per-machine”
  • C:\Users\thomthom\AppData\Local\Programs\Transmutr\resources\app.asar.unpacked\_webpack if installed “per-user”

Let me know if you need anything else.

One more thing.
We use Electron, so the easiest is to attach the debugger once Transmutr is already launched. Electron uses multiple processes, so you might need to try a few of them. Usually, the first process in the debugger selection window is the one, but that’s not true 100% of the time.