Reputation: 11
After upgrade to BODS 4.3 we can see intermittent Access Violation error in dataflow which generates Hash Keys using a user defined transformation which runs on python script.
Error:
Job name: JDE_Journals_NA_CDC
(14.3) 08-24-23 01:39:53 (E) (10712:5416) FIL-080134: |Dataflow DF_JDE_STG_TO_TEMP_NA|Pipe Listener for DF_JDE_STG_TO_TEMP_NA_1_2
Named pipe error occurred: <The pipe has been ended.
>
(14.3) 08-24-23 01:39:53 (E) (10712:5920) SYS-170101: System Exception <ACCESS_VIOLATION> occurred. Process dump option is off. Process is not dumped.
Call stack:
0x000000003F469D0C, wcreat()+0396 byte(s)
0x000000003F469E33, dup()+0131 byte(s)
0x0000000014987FD6, Py_EndInterpreter()+1222 byte(s)
0x000000001498870E, Py_EndInterpreter()+3070 byte(s)
0x0000000014985ABF, Py_PreInitializeFromConfig()+3375 byte(s)
0x0000000014985CB0, Py_PreInitializeFromConfig()+3872 byte(s)
0x0000000014985DE0, Py_InitializeFromConfig()+0224 byte(s)
0x0000000014985F53, Py_InitializeEx()+0291 byte(s)
0x00000000364387C4, PythonExprFactoryPlugin::init()+0660 byte(s)
0x0000000036437FE7, PythonExprFactoryPlugin::PythonExprFactoryPlugin()+0135 byte(s)
0x0000000036438404, PythonExprFactoryPlugin::Instance()+0084 byte(s)
0x00000000364337DA, ExprFactoryPlugin::Instance()+0106 byte(s)
0x0000000036B729AE, UserDefinedTransform::PerTransformInit()+0766 byte(s)
0x0000000027BE5B93, isisFlTransform::FlTransform::init()+0035 byte(s)
0x000000001898CBF4, XTran_SDK::open()+1508 byte(s)
0x0000000018B61B60, XTran_desc::open()+0048 byte(s)
0x0000000018B92107, XProc_children::open()+0151 byte(s)
0x0000000018B6B0F1, XDataflow_desc::executeInline()+0129 byte(s)
0x0000000018B85D93, XDataflow_info::execute()+2355 byte(s)
0x0000000018B6B028, XDataflow_desc::execute()+0104 byte(s)
0x0000000018B83E8B, XDataflow_info::compute()+0379 byte(s)
0x0000000018B83CD3, XDataflow_info::compute()+0355 byte(s)
0x0000000017CE5FE0, DFCommClient::executeDataflow()+0032 byte(s)
0x0000000025A71FD5, RWThreadFunctionImp::run()+0117 byte(s)
0x0000000025A65D11, RWRunnableImp::exec()+0257 byte(s)
0x0000000025A7368F, RWThreadImp::exec()+0031 byte(s)
0x0000000025A7233D, RWThreadImp::~RWThreadImp()+0333 byte(s)
0x000000003F41FB80, o__realloc_base()+0096 byte(s)
0x00000000403F84D4, BaseThreadInitThunk()+0020 byte(s)
0x0000000042C31791, RtlUserThreadStart()+0033 byte(s)
Registers:
RAX=0000000000000000 RBX=0000000000000748 RCX=0000000000000FC0 RDX=0000000000000000 RSI=00000000FFFFFFFF
RDI=00000000FFFFFFFF RBP=0000000000000000 RSP=00000000ACDED350 RIP=000000003F469D0C FLG=0000000000010206
R8=0000000000000008 R9=000000003F4C0570 R10=00000000000002C0 R11=0000000000000058 R12=0000000000000000
R13=000000003F4E55E0 R14=0000000000000000 R15=000000003F4E5500
Exception code: C0000005 ACCESS_VIOLATION
Fault address: 00007FFA3F469D0C 01:0000000000068D0C C:\Windows\System32\ucrtbase.dll
==========================================================
Collect the following and send to Customer Support:
1. Log files(error_*, monitor_*, trace_*) associated with this failed job.
2. Exported ATL file of this failed job.
3. DDL statements of tables referenced in this failed job.
4. Data to populate the tables referenced in the failed job. If not possible, get the last few rows (or sample of them) when
the job failed.
5. Core dump, if any, generated from this failed job.
==========================================================
(14.3) 08-24-23 01:39:53 (E) (10712:5920) SYS-170101: System Exception <ACCESS_VIOLATION> occurred. Process dump option is off. Process is not dumped.
Call stack:
0x000000003F469D0C, wcreat()+0396 byte(s)
0x000000003F469E33, dup()+0131 byte(s)
0x0000000014987FD6, Py_EndInterpreter()+1222 byte(s)
0x000000001498870E, Py_EndInterpreter()+3070 byte(s)
0x0000000014985ABF, Py_PreInitializeFromConfig()+3375 byte(s)
0x0000000014985CB0, Py_PreInitializeFromConfig()+3872 byte(s)
0x0000000014985DE0, Py_InitializeFromConfig()+0224 byte(s)
0x0000000014985F53, Py_InitializeEx()+0291 byte(s)
0x00000000364387C4, PythonExprFactoryPlugin::init()+0660 byte(s)
0x0000000036437FE7, PythonExprFactoryPlugin::PythonExprFactoryPlugin()+0135 byte(s)
0x0000000036438404, PythonExprFactoryPlugin::Instance()+0084 byte(s)
0x00000000364337DA, ExprFactoryPlugin::Instance()+0106 byte(s)
0x0000000036B729AE, UserDefinedTransform::PerTransformInit()+0766 byte(s)
0x0000000027BE5B93, isisFlTransform::FlTransform::init()+0035 byte(s)
0x000000001898CBF4, XTran_SDK::open()+1508 byte(s)
0x0000000018B61B60, XTran_desc::open()+0048 byte(s)
0x0000000018B92107, XProc_children::open()+0151 byte(s)
0x0000000018B6B0F1, XDataflow_desc::executeInline()+0129 byte(s)
0x0000000018B85D93, XDataflow_info::execute()+2355 byte(s)
0x0000000018B6B028, XDataflow_desc::execute()+0104 byte(s)
0x0000000018B83E8B, XDataflow_info::compute()+0379 byte(s)
0x0000000018B83CD3, XDataflow_info::compute()+0355 byte(s)
0x0000000017CE5FE0, DFCommClient::executeDataflow()+0032 byte(s)
0x0000000025A71FD5, RWThreadFunctionImp::run()+0117 byte(s)
0x0000000025A65D11, RWRunnableImp::exec()+0257 byte(s)
0x0000000025A7368F, RWThreadImp::exec()+0031 byte(s)
0x0000000025A7233D, RWThreadImp::~RWThreadImp()+0333 byte(s)
0x000000003F41FB80, o__realloc_base()+0096 byte(s)
0x00000000403F84D4, BaseThreadInitThunk()+0020 byte(s)
0x0000000042C31791, RtlUserThreadStart()+0033 byte(s)
Registers:
RAX=0000000000000000 RBX=0000000000000748 RCX=0000000000000FC0 RDX=0000000000000000 RSI=00000000FFFFFFFF
RDI=00000000FFFFFFFF RBP=0000000000000000 RSP=00000000ACDED350 RIP=000000003F469D0C FLG=0000000000010206
R8=0000000000000008 R9=000000003F4C0570 R10=00000000000002C0 R11=0000000000000058 R12=0000000000000000
R13=000000003F4E55E0 R14=0000000000000000 R15=000000003F4E5500
Exception code: C0000005 ACCESS_VIOLATION
Fault address: 00007FFA3F469D0C 01:0000000000068D0C C:\Windows\System32\ucrtbase.dll
==========================================================
Collect the following and send to Customer Support:
1. Log files(error_*, monitor_*, trace_*) associated with this failed job.
2. Exported ATL file of this failed job.
3. DDL statements of tables referenced in this failed job.
4. Data to populate the tables referenced in the failed job. If not possible, get the last few rows (or sample of them) when
the job failed.
5. Core dump, if any, generated from this failed job.
==========================================================
(14.3) 08-24-23 01:39:54 (E) (10712:6752) FIL-080134: |Dataflow DF_JDE_STG_TO_TEMP_NA|Pipe Listener for DF_JDE_STG_TO_TEMP_NA_1_1
Named pipe error occurred: <The pipe has been ended.
>
(14.3) 08-24-23 01:39:54 (E) (10712:9844) FIL-080134: |Dataflow DF_JDE_STG_TO_TEMP_NA|Pipe Listener for DF_JDE_STG_TO_TEMP_NA_1_3
Named pipe error occurred: <The pipe has been ended.
>
(14.3) 08-24-23 01:39:54 (E) (10712:5756) FIL-080134: |Dataflow DF_JDE_STG_TO_TEMP_NA|Pipe Listener for DF_JDE_STG_TO_TEMP_NA_1_4
Named pipe error occurred: <The pipe has been ended.
>
-----------------------------------
Pyhton Code used to generate the HASH KEY:
import base64
import hashlib
import re
input_str = record.GetField(u'INPUT_STRING')
special_exclude = re.sub(r"[^a-zA-Z0-9]","",input_str)
output_length = record.GetField(u'INPUT_REQUIRED_LENGTH')
#output_str = base64.urlsafe_b64encode(hashlib.md5(special_exclude).digest())[:int(output_length)]
output_str = base64.b85encode(hashlib.md5(input_str.encode('utf-8')).digest())
output_str = output_str.decode('utf-8').replace("[","").replace("]","").replace("'","")
#record.SetField(u'OUTPUT_HASH_KEY', unicode(output_str))
record.SetField(u'OUTPUT_HASH_KEY', output_str)
del input_str, output_str, output_length,special_exclude
We tried the below: Implementing SAP note #3271669 - didn't work. Toggling between dataflow property of 'In-Memory' and 'Pageable' to see if it has an impact on the connectivity between Python and BODS server - didn't work.
Upvotes: 1
Views: 292