Page 1 of 1

px version of Ereplace - SIGSEGV error.

Posted: Mon Dec 03, 2007 11:15 am
by sspreethi
Hi,

I have created a parallel routine for Ereplace using the code by DSguru2B (viewtopic.php?t=106358&highlight=ereplace)

I have compiled the code & mentioned the library path:
/etl/ascential/Ascential/DataStage/PXEngine.751.1/lib/libereplace.o

When I compile a job using this routine, it aborts with the following error.
Data_Validation_Dtl1_Tfm,0: sh: dbx: not found
Data_Validation_Dtl1_Tfm,0: Operator terminated abnormally: received signal SIGSEGV

I did check the forum for Segment Violation(SISSEGV) & above errors but could not find a solution.

Please let me know how to proceed.

kduke - I read your post that it worked fine for you. Can you pls let me know if I need to change any thing.

- Preethi

Posted: Mon Dec 03, 2007 2:39 pm
by ray.wurlod
How much physical memory do you have? Monitor with vmstat while this job is running.

Posted: Mon Dec 03, 2007 3:00 pm
by sspreethi
Ray, will this information help?

procs memory page disk faults cpu
r b w swap free re mf pi po fr de sr s0 s1 s2 s3 in sy cs us sy id
0 0 0 17150280 1040208 258 886 1049 8 10 0 3 0 0 0 0 300 547 488 15 6 79

Posted: Mon Dec 03, 2007 5:08 pm
by DSguru2B
What happens when you go for the "object file" option instead of the library option while creating the interlude for the px routine?

Posted: Tue Dec 04, 2007 9:01 am
by sspreethi
I have used object file option only...

Posted: Tue Dec 04, 2007 1:29 pm
by DSguru2B
You should not be getting that error while compilation. Any time you get a compilation error is, when you have compiled the routine properly.
Create a simple c routine that takes in an arguments as integer and adds 10 to it and returns it back. See if you are getting the same issue with that.

Posted: Tue Dec 04, 2007 1:51 pm
by sspreethi
I get this error while running the job using this routine. Sorry for typing it wrong earlier in the post.
Also I have tried executing a sample rouine & it works fine.

Posted: Tue Dec 04, 2007 2:55 pm
by DSguru2B
The very first line of the routine where your specifying the size of "result", remove that line and try the following:

Code: Select all

char *result = (char *)malloc (sizeof(str));

Posted: Tue Dec 04, 2007 5:14 pm
by DSguru2B
I also suspect its the amount of memory thats being allocated for result variable, thats why I asked the OP to remove or comment out that line and specify the size of the complete string. If that does not work, he should then just explicitly specify

Code: Select all

char *result = (char *)malloc (1000); 
and then try again. If the code runs without any hitch, then the memory allocation line for result needs to be re-written.