community
cancel
Showing results for 
Search instead for 
Did you mean: 

Dev Space

Customize & extend the power of Alteryx. SDKs, APIs, custom tools, and more!

Alteryx crashes when Python doesn't set all output fields

Highlighted
Alteryx Certified Partner

Alteryx crashes when running a Python module that doesn't set every field on the output record.

 

If a set_from_*/set_null is not called for every field on every record, the underlying data structure is left uninitialized and for String fields can cause a crash.
For Integer/Double/Datetime fields whose contents are within the datastructure itself, downstream tools will read the uninitialized memory.
String fields are more dangerous as they appear to be stored as uninitialized pointers. These pointers can point to anywhere in memory and depending on their contents dereferencing these pointers causes Alteryx to crash.

Sometimes the following message also appears: "You have found a bug. Replicate, then let us know. We shall fix it soon."

 

The following code snippet can cause this:
record_creator.reset()
out_record = record_creator.finalize_record()
output_anchor.push_record(out_record)

 

Alternatively see attached for a test case. Install the plugin. Run the first workflow repeatedly and check the browse tool each time. Run the second workflow for an almost guaranteed crash.

(Note: Increasing the number of rows doesn't increase the likelihood of a crash in this test case as the underlying datastructure is reused).

 

Edit: Technically I did make a Python plugin. Do I get a Python Contest badge too?

Alteryx
Alteryx

Thanks for sharing this one as well @AshleyO, going to send this one over to the team to check it out.

 

--

Tasha

Alteryx
Alteryx

@AshleyO

 

Quick follow up, we have this logged in our defect tracking system, and will post in this thread if we plan to release a change in the future.

 

Thanks!