Last modified: 2025-02-20 15:16:52
< 2025-02-19 2025-02-21 >Someone on reddit said they tried to use it and it said "Failed to execute BooleanWorker" and then segfaulted.
The first problem is it couldn't find the BooleanWorker binary.
The second problem is the child process segfaults on the call to exit()
. Maybe
I want _exit()
instead? That seems to have fixed it.
I've also added a "spinning" progress bar.
Next up is reaping zombie processes. If you abort the operation then the BooleanWorker
sticks around as a zombie. Why? I thought I called waitpid
on every code path.
The exception we get is "Failed to read result size".
Ohhh! It's an exception. readResult()
throws the exception so we never get to waitpid
.
I guess the solution is to try
/catch
readResult()
, waitpid()
in catch
, and
then rethrow the exception.
Yep, that does the job.
Still need to find other places that can trigger a recompute but don't launch the Abort dialog.
"sunshine-and-sorrow" on reddit recorded this: https://imgur.com/a/2Cua6iR
Also says:
< 2025-02-19 2025-02-21 >I think the most common ones are:
- VarSet (Note that one property in VarSet may depend on another property, so changing either of them will trigger a recompute)
- Sketch Constraints (Eg. Constraints.total_length / Constraints.segment_length might be used as a count for a LinearTransform, so if the user goes back into the Sketch and changes a Constraint, it will trigger a recompute of the Transform)
- Spreadsheet - User may have values stored in a cell to be used as a parameter for a boolean operation.
- Python Console or Macro
Should the value in the input field reset to whatever it was before you edited it?
Yes, I think this is the correct behavior. Since the operation was aborted, it makes sense to set the value back to the previous one.