Problem Note 48924: Batch optimization fails with ERROR: TKTException code = 6 (Access violation)
When running batch optimization in SAS® High-Performance Markdown Optimization, you might encounter the following exception in the grid server log:
DEBUG - STDOUT: ERROR: TKTException code = 6 (Access violation)
DEBUG - STDOUT: at /sas/dev/mva-f2tkmi43/di/src/tkmi_exception.c:117
DEBUG - STDOUT: #4 0x00002aaaaae32b42 in tkmi_exception_handler (thread=0x5d6,
DEBUG - STDOUT: ctxt=0x4782725c, code=TKTE_UnknownException)
DEBUG - STDOUT: at /sas/dev/mva-f2tkmi43/di/src/tkmi_exception.c:81
DEBUG - STDOUT: #5 0x00002b73a14b165b in bktExcept ()
DEBUG - STDOUT: from /sas/SASHighPerformanceMerchandiseIntelligenceServer/4.3/HPTKDI/tkext/com/laxno/tkmk.so
DEBUG - STDOUT: #6 0x00002b73a14b3da3 in bkt_segv ()
DEBUG - STDOUT: from /sas/SASHighPerformanceMerchandiseIntelligenceServer/4.3/HPTKDI/tkext/com/laxno/tkmk.so
DEBUG - STDOUT: #7 0x00002b73a14b1a9c in bkt_signal_handler ()
DEBUG - STDOUT: from /sas/SASHighPerformanceMerchandiseIntelligenceServer/4.3/HPTKDI/tkext/com/laxno/tkmk.so
DEBUG - STDOUT: #8 <signal handler called>
DEBUG - STDOUT: #9 0x00002b73a14b8e68 in skm_unlinke ()
DEBUG - STDOUT: from /sas/SASHighPerformanceMerchandiseIntelligenceServer/4.3/HPTKDI/tkext/com/laxno/tkmk.so
DEBUG - STDOUT: #10 0x00002b73a14b7655 in skmMemRelease ()
DEBUG - STDOUT: from /sas/SASHighPerformanceMerchandiseIntelligenceServer/4.3/HPTKDI/tkext/com/laxno/tkmk.so
DEBUG - STDOUT: #11 0x00002aaaaae205bd in base_memory_pool_free (this=0x2aad244b6e60,
DEBUG - STDOUT: p=0x2aad2f0588f0, size=0, f=0x0, l=-1)
DEBUG - STDOUT: at /sas/dev/mva-f2tkmi43/di/src/base_memory_pool.c:364
DEBUG - STDOUT: #12 0x00002aaaaae1e89b in base_free_pool (pool=0x2aad244b6e60,
DEBUG - STDOUT: p=0x2aad2f0588f0, size=0, f=0x0, l=-1)
DEBUG - STDOUT: at /sas/dev/mva-f2tkmi43/di/src/base.c:324
DEBUG - STDOUT: #13 0x00002aaaaae1f00c in base_free (p=0x2aad244b6e60, size=46923306600688,
DEBUG - STDOUT: f=0x0, l=0) at /sas/dev/mva-f2tkmi43/di/src/base.c:317
DEBUG - STDOUT: #14 0x00002aaaaaef06e2 in mdo_uniform_time (plan=0x2aad244b6e60,
DEBUG - STDOUT: batch_opt_size=788891888)
DEBUG - STDOUT: at /sas/dev/mva-f2tkmi43/di/src/mdo_uniform_time.c:669
DEBUG - STDOUT: #15 0x00002aaaaaef98b1 in mdo_plan_run (mdo_srvc=0x2aad244b6e60,
DEBUG - STDOUT: this=0x2aad2f0588f0, batch_opt_size=0)
DEBUG - STDOUT: at /sas/dev/mva-f2tkmi43/di/src/mdo_plan.c:399
DEBUG - STDOUT: #16 0x00002aaaaaec9d2c in mdo_service_opt (context=0x2aaaff1d4678)
DEBUG - STDOUT: at /sas/dev/mva-f2tkmi43/di/src/mdo_service.c:1077
DEBUG - STDOUT: #17 0x00002aaaaae24036 in logic_fn (ctxt=0x2b73a17f74a8, req=0x2aad1836c0e8,
DEBUG - STDOUT: thread=0x2aab27fef150, cb=0x2aaaae5dace8)
DEBUG - STDOUT: at /sas/dev/mva-f2tkmi43/di/src/job_manager.c:1265
DEBUG - STDOUT: #18 0x00002aaaab9e4e5f in basicPuddleMain ()
DEBUG - STDOUT: from /sas/SASHighPerformanceMerchandiseIntelligenceServer/4.3/HPTKDI/tkext/com/laxno/tkepdl.so
DEBUG - STDOUT: #19 0x00002b73a14b01a2 in sktMain ()
DEBUG - STDOUT: from /sas/SASHighPerformanceMerchandiseIntelligenceServer/4.3/HPTKDI/tkext/com/laxno/tkmk.so
DEBUG - STDOUT: #20 0x00002b73a14b14cb in bktMain ()
DEBUG - STDOUT: from /sas/SASHighPerformanceMerchandiseIntelligenceServer/4.3/HPTKDI/tkext/com/laxno/tkmk.so
DEBUG - STDOUT: #21 0x0000003459a0677d in start_thread () from /lib64/libpthread.so.0
DEBUG - STDOUT: #22 0x0000003458ad3c1d in clone () from /lib64/libc.so.6
Markdown plans with the following characteristics might trigger this exception:
- Contains a force markdown by date that is in the past
- Uniform timing is active (in other words the number of uniformly timed markdowns > 0)
The exception occurs with some negative indexes in an 'array bound write' when the memory required for the operation is not assigned. There is no way to predict when the required part of the memory is assigned or not and therefore no way to predict when the exception is triggered.
To work around this issue, we recommend disabling the plan(s) and resuming the process. The steps to do this are below:
- For the plan(s) failing optimization, mark the plan(s) 'compete' by setting MDO_PLAN.PLAN_STATUS_CD=20. 20 is the code for complete.
- Stop and restart the grid server.
- Resume the etl_end_service task using the resume=1 option. A sample call might look like:
%tkmi_job_ro(run_only=%bquote(etl_start_service etl_end_service),resume=1); Note that you can also rerun the etl_end_service task in its entirety (versus resume).
This workaround allows the batch_opt process to skip that plan (or plans) and process the remaining plan(s) successfully. After the batch_opt process completes successfully, you can continue with the rest of the batch process.
Operating System and Release Information
SAS System | SAS High-Performance Markdown Optimization | Linux for x64 | 4.3 | 5.2_M2 | 9.2 TS2M3 | 9.3 TS1M2 |
*
For software releases that are not yet generally available, the Fixed
Release is the software release in which the problem is planned to be
fixed.
Type: | Problem Note |
Priority: | alert |
Date Modified: | 2016-02-01 16:50:24 |
Date Created: | 2013-01-15 11:10:01 |