UNCLASSIFIED
I'm getting an exception raised in OcpiRccWorker.cxx, in
"prepareProperty" function - it's throwing the
OU::PROPERTY_SET_EXCEPTION.
In the preceeding line ("if ( (md.m_offset+sizeof(md.m_baseType)) >
m_dispatch->propertySize ) {"), m_offset is 61 and the "propertySize" is
64. Since m_baseType is a typedef from BaseType which is an enumeration
and therefore 4 bytes, the error is triggered.
This has only appeared since adding a Bool property in the worker
specification. It works fine with the equivalent HDL by the way.
Looking at the generated worker .h file, the properties are:
typedef struct {
uint8_t data_opcode;
uint8_t rslt_opcode;
uint8_t startup_dly;
char pad0_[1];
uint32_t ddc_init;
uint32_t duc_init;
uint32_t noise_init;
uint16_t motion_prd;
char pad1_[2];
uint32_t update_prd;
uint16_t update_prd_inc;
RCCBoolean freq_ctrl;
char pad2_[1];
int16_t freq_start;
int16_t freq_inc;
RCCBoolean delay_ctrl;
char pad3_[1];
uint16_t delay_start;
int16_t delay_inc;
RCCBoolean gain_ctrl;
char pad4_[1];
uint16_t gain_start;
int16_t gain_inc;
RCCBoolean first;
char pad5_[3];
uint32_t target;
uint16_t noise_amp;
uint8_t repeat;
char pad6_[1];
uint32_t busy;
uint8_t ocpistate;
RCCBoolean wrkReset;
} Gewc_targetgen_t0Properties;
Which totals 62 bytes (presumably propertySize is expanded to fit a
32-bit boundary). Should the line from prepareProperty be checking for
the size of the property itself, not the enumeration?
Cheers,
Nigel
IMPORTANT: This email remains the property of the Department of Defence
and is subject to the jurisdiction of section 70 of the Crimes Act 1914.
If you have received this email in error, you are requested to contact
the sender and delete the email.
_______________________________________________
opencpi_dev mailing list
[email protected]
http://lists.opencpi.org/listinfo.cgi/opencpi_dev-opencpi.org