Refinitiv / Real-Time-SDK

Other
184 stars 129 forks source link

core dump in C/C++ EMA 3.3.0 wlItemGroupRemove #108

Closed its-b closed 4 years ago

its-b commented 5 years ago

I am seeing a regular core dump in C/C++ EMA 3.3.0 wlItemGroupRemove - stack trace details below. It correlates with service disruption - this example during weekend work but others consistently at a time when an internal service does an eod reset/restart. The application is simple subscription only - no additional threads apart from EMA. It looks to me like EMA is failing to handle a service down event and crashing trying to remove all items for the service. I don't have control of the service side but I think this should be reproducible by enabling/disabling a service. Do you recognise this problem and if so any workarounds or plans to fix ? Any places/pointers/array bounds in wlItemGroupRemove which could crash ? Thanks

Elektron-SDK-1.3.0.L1 C/C++ / ema 3.3.0.L1 / eta 3.3.0.L1 Red Hat Enterprise Linux Server release 6.10 (Santiago) Linux 2.6.32-754.10.1.el6.x86_64 #1 SMP Thu Nov 29 15:44:01 EST 2018 x86_64 x86_64 x86_64 GNU/Linux Connected component version: ads3.2.2.L1.linux.tis.rrg 64-bit

Program terminated with signal 11, Segmentation fault.

0 0x00000000006009fa in wlItemGroupRemove ()

(gdb) bt

0 0x00000000006009fa in wlItemGroupRemove ()

1 0x0000000000601b5b in wlItemStreamClose ()

2 0x00000000005d3e8a in wlFanoutItemMsgEvent ()

3 0x00000000005d5f0c in wlServiceUpdateCallback ()

4 0x0000000000606a0c in wlServiceCacheClear ()

5 0x00000000005bd62f in _reactorHandleChannelDown ()

6 0x00000000005c3a52 in _reactorDispatchFromChannel ()

7 0x00000000005c40af in rsslReactorDispatch ()

8 0x0000000000527acf in thomsonreuters::ema::access::OmmBaseImpl::rsslReactorDispatchLoop(long long, unsigned int, bool&) ()

9 0x0000000000527fdc in thomsonreuters::ema::access::OmmBaseImpl::run() ()

10 0x0000000000494f5e in thomsonreuters::ema::access::Thread::runThread(void*) ()

11 0x0000003300607aa1 in start_thread () from /lib64/libpthread.so.0

12 0x00000033002e8bdd in clone () from /lib64/libc.so.6

(gdb) info threads 3 Thread 0x7f137a887700 (LWP 294970) 0x00000033002df393 in poll () from /lib64/libc.so.6 2 Thread 0x7f137c0da720 (LWP 294969) 0x00000033002e1633 in select () from /lib64/libc.so.6

(gdb) info all-registers rax 0x302ec1e 50523166 rbx 0x7f136c00ed70 139721393106288 rcx 0x7f136c00edc0 139721393106368 rdx 0x656c4520202023c0 7308292299595719616 rsi 0x7a9db90 128572304 rdi 0x7f136c00ed70 139721393106288 rbp 0x1a676f0 0x1a676f0 rsp 0x7f1373ffd160 0x7f1373ffd160 r8 0x0 0 r9 0x6d614e6563697672 7881667020241598066 r10 0x535f4e4449223d65 6007606483127254373 r11 0x0 0 r12 0x1a679e0 27687392 r13 0x1a02cc0 27274432 r14 0x1a02cc0 27274432 r15 0x7f1373ffd2b0 139721527251632 rip 0x6009fa 0x6009fa <wlItemGroupRemove+26> eflags 0x10206 [ PF IF RF ] cs 0x33 51 ss 0x2b 43 ds 0x0 0 es 0x0 0 fs 0x0 0 gs 0x0 0 st0 0 (raw 0x00000000000000000000) st1 0 (raw 0x00000000000000000000) st2 0 (raw 0x00000000000000000000) st3 0 (raw 0x00000000000000000000) st4 0 (raw 0x00000000000000000000) st5 0 (raw 0x00000000000000000000) st6 0 (raw 0x00000000000000000000) st7 0 (raw 0x00000000000000000000) fctrl 0x37f 895 fstat 0x0 0 ftag 0xffff 65535 fiseg 0x0 0 fioff 0x0 0 foseg 0x0 0 fooff 0x0 0 fop 0x0 0 mxcsr 0x1fa0 [ PE IM DM ZM OM UM PM ] ymm0 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0 <repeats 11 times>, 0xff, 0x0 <repeats 20 times>}, v16_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0xff00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int32 = {0x0, 0x0, 0xff000000, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0xff000000, 0x0, 0x0}, v2_int128 = {0x00000000ff0000000000000000000000, 0x00000000000000000000000000000000}} ymm1 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0 <repeats 11 times>, 0x1, 0x0 <repeats 20 times>}, v16_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x100, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int32 = {0x0, 0x0, 0x1000000, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x1000000, 0x0, 0x0}, v2_int128 = {0x00000000010000000000000000000000, 0x00000000000000000000000000000000}} ymm2 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x8000000000000000, 0x8000000000000000, 0x0, 0x0}, v32_int8 = {0x4e, 0x53, 0x74, 0x36, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x35, 0x66, 0x61, 0x63, 0x65, 0x74, 0x0 <repeats 16 times>}, v16_int16 = {0x534e, 0x3674, 0x6f6c, 0x6163, 0x656c, 0x6635, 0x6361, 0x7465, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int32 = {0x3674534e, 0x61636f6c, 0x6635656c, 0x74656361, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x61636f6c3674534e, 0x746563616635656c, 0x0, 0x0}, v2_int128 = {0x746563616635656c61636f6c3674534e, 0x00000000000000000000000000000000}} ymm3 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0 <repeats 11 times>, 0xff, 0x0 <repeats 20 times>}, v16_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0xff00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int32 = {0x0, 0x0, 0xff000000, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0xff000000, 0x0, 0x0}, v2_int128 = {0x00000000ff0000000000000000000000, 0x00000000000000000000000000000000}} ymm4 {v8_float = {0x3, 0x3, 0x3, 0x3, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x20, 0x20, 0x0, 0x0}, v32_int8 = {0x40 <repeats 16 times>, 0x0 <repeats 16 times>}, v16_int16 = {0x4040, 0x4040, 0x4040, 0x4040, 0x4040, 0x4040, 0x4040, 0x4040, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int32 = {0x40404040, 0x40404040, 0x40404040, 0x40404040, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x4040404040404040, 0x4040404040404040, 0x0, 0x0}, v2_int128 = { 0x40404040404040404040404040404040, 0x00000000000000000000000000000000}} ymm5 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x8000000000000000, 0x8000000000000000, 0x0, 0x0}, v32_int8 = {0x5b <repeats 16 times>, 0x0 <repeats 16 times>}, v16_int16 = {0x5b5b, 0x5b5b, 0x5b5b, 0x5b5b, 0x5b5b, 0x5b5b, 0x5b5b, 0x5b5b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int32 = {0x5b5b5b5b, 0x5b5b5b5b, 0x5b5b5b5b, 0x5b5b5b5b, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x5b5b5b5b5b5b5b5b, 0x5b5b5b5b5b5b5b5b, 0x0, 0x0}, v2_int128 = {0x5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b, 0x00000000000000000000000000000000}} ymm6 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x20 <repeats 16 times>, 0x0 <repeats 16 times>}, v16_int16 = {0x2020, 0x2020, 0x2020, 0x2020, 0x2020, 0x2020, 0x2020, 0x2020, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int32 = {0x20202020, 0x20202020, 0x20202020, 0x20202020, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x2020202020202020, 0x2020202020202020, 0x0, 0x0}, v2_int128 = { 0x20202020202020202020202020202020, 0x00000000000000000000000000000000}} ymm7 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}} ymm8 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0xff, 0x0 <repeats 18 times>}, v16_int16 = {0x0, 0x0, 0x0, 0x0, 0xff00, 0x0, 0xff00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int32 = {0x0, 0x0, 0xff00, 0xff00, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0xff000000ff00, 0x0, 0x0}, v2_int128 = {0x0000ff000000ff000000000000000000, 0x00000000000000000000000000000000}} ymm9 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}} ymm10 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x8000000000000000, 0x0, 0x0}, v32_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0 <repeats 16 times>}, v16_int16 = {0x0, 0x0, 0x0, 0x0, 0xff00, 0x0, 0xff00, 0xffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int32 = {0x0, 0x0, 0xff00, 0xffffff00, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0xffffff000000ff00, 0x0, 0x0}, v2_int128 = {0xffffff000000ff000000000000000000, 0x00000000000000000000000000000000}} ymm11 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}} ymm12 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}} ymm13 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}} ymm14 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}} ymm15 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}}

(gdb) info frame Stack level 0, frame at 0x7f1373ffd170: rip = 0x6009fa in wlItemGroupRemove; saved rip 0x601b5b called by frame at 0x7f1373ffd190 Arglist at 0x7f1373ffd158, args: Locals at 0x7f1373ffd158, Previous frame's sp is 0x7f1373ffd170 Saved registers: rbx at 0x7f1373ffd160, rip at 0x7f1373ffd168

geoffmallard commented 5 years ago

@its-b Thank you for submitting your issue with the included information.

Since the stack you provided does not looks like a valid call path, memory corruptions could be a possibility. To get a better picture for what is happening, can you try to reproduce this issue with a debug build?

Your issue may also give some insight into issue #103, which is currently under investigation.

If you are an RDC member, please raise this issue through our Support channel to receive more rapid feedback.

its-b commented 5 years ago

I have some more information on this crash based on a debug build using your source download for Elektron-SDK-Elektron-SDK-1.3.0.L1. I have also confirmed the crash is triggered by the restart of a component providing items for a particular internal service over trep. The crash point is in an inline function which was optimised out from the original stack trace. Note the line numbers for wlItem.c >568 will be offset from your copy due to additional debug logging in my version.

The issue is that pTable passed to rsslHashTableRemoveLink is invalid memory RTR_C_INLINE void rsslHashTableRemoveLink(RsslHashTable pTable, RsslHashLink pLink) { RsslUInt32 queueListLocation = pLink->hashSum % pTable->queueCount;

(gdb) p *pTable Cannot access memory at address 0x7f820000005e

and in the caller pWlService is also invalid void wlItemGroupRemove(WlItemGroup *pItemGroup) { ... rsslHashTableRemoveLink(&pItemGroup->pWlService->itemGroupTable, &pItemGroup->hlItemGroupTable);

(gdb) p pItemGroup->pWlService $7 = (WlService ) 0x7f8200000006 (gdb) p pItemGroup->pWlService Cannot access memory at address 0x7f8200000006

pItemGroup looks ok (gdb) p *pItemGroup $8 = {hlItemGroupTable = {queueLink = {prev = 0x7f8200000006, next = 0x7f82f0016180}, pKey = 0x7f8200000007, hashSum = 4026641616}, qlItemGroups = {prev = 0x47534300003d59, next = 0x35}, pWlService = 0x7f8200000006, groupId = { length = 4026641648, data = 0x7f8200000007 <Address 0x7f8200000007 out of bounds>}, openStreamList = {head = {prev = 0x7f82f001a220, next = 0x444545465443}, count = 0, iterNext = 0x7f82f0015ee0}}

My conclusion so far is that pItemGroup->pWlService has already been freed (wlServiceDestroy) and the logic in wlItemGroupRemoveStream is wrong to call wlItemGroupRemove. Please investigate the logic around service removal and cleanup.

0 0x000000000069594c in rsslHashTableRemoveLink (pTable=0x7f820000005e, pLink=0x7f82f0013060) at /emasrc/Elektron-SDK-Elektron-SDK-1.3.0.L1/Cpp-C/Eta/Include/Util/rtr/rsslHashTable.h:229

1 0x000000000069760c in wlItemGroupRemove (pItemGroup=0x7f82f0013060) at /emasrc/Elektron-SDK-Elektron-SDK-1.3.0.L1/Cpp-C/Eta/Impl/Reactor/Watchlist/wlItem.c:588

2 0x0000000000697870 in wlItemGroupRemoveStream (pItems=0x13659b0, pItemGroup=0x7f82f0013060, pItemStream=0x13e4b80)

at /emasrc/Elektron-SDK-Elektron-SDK-1.3.0.L1/Cpp-C/Eta/Impl/Reactor/Watchlist/wlItem.c:655

3 0x0000000000697373 in wlItemGroupAddStream (pItems=0x13659b0, pGroupId=0x7f82fe94ab10, pItemStream=0x13e4b80, pErrorInfo=0x1300cf0)

at /emasrc/Elektron-SDK-Elektron-SDK-1.3.0.L1/Cpp-C/Eta/Impl/Reactor/Watchlist/wlItem.c:530

4 0x000000000065cde2 in wlFanoutItemMsgEvent (pWatchlistImpl=0x13656c0, pItemStream=0x13e4b80, pEvent=0x7f82fe949340, pErrorInfo=0x1300cf0)

at /emasrc/Elektron-SDK-Elektron-SDK-1.3.0.L1/Cpp-C/Eta/Impl/Reactor/Watchlist/rsslWatchlistImpl.c:2259

5 0x000000000065b18a in rsslWatchlistReadMsg (pWatchlist=0x13656c0, pOptions=0x7f82fe94ab90, currentTime=1561064477100, pErrorInfo=0x1300cf0)

at /emasrc/Elektron-SDK-Elektron-SDK-1.3.0.L1/Cpp-C/Eta/Impl/Reactor/Watchlist/rsslWatchlistImpl.c:1481

6 0x0000000000642630 in _reactorReadWatchlistMsg (pReactorImpl=0x1312c60, pReactorChannel=0x1319550, pOptions=0x7f82fe94ab90, pError=0x1300cf0)

at /emasrc/Elektron-SDK-Elektron-SDK-1.3.0.L1/Cpp-C/Eta/Impl/Reactor/rsslReactor.c:2023

7 0x00000000006470bd in _reactorDispatchFromChannel (pReactorImpl=0x1312c60, pReactorChannel=0x1319550, pError=0x1300cf0)

at /emasrc/Elektron-SDK-Elektron-SDK-1.3.0.L1/Cpp-C/Eta/Impl/Reactor/rsslReactor.c:3562

8 0x0000000000640e0f in rsslReactorDispatch (pReactor=0x1312c60, pDispatchOpts=0x7f82fe94adc0, pError=0x1300cf0)

at /emasrc/Elektron-SDK-Elektron-SDK-1.3.0.L1/Cpp-C/Eta/Impl/Reactor/rsslReactor.c:1415

9 0x00000000005871eb in thomsonreuters::ema::access::OmmBaseImpl::rsslReactorDispatchLoop (this=0x1300ba0, timeOut=-1, count=100, bMsgDispRcvd=@0x1301637)

at /emasrc/Elektron-SDK-Elektron-SDK-1.3.0.L1/Cpp-C/Ema/Src/Access/Impl/OmmBaseImpl.cpp:1675

10 0x000000000058804b in thomsonreuters::ema::access::OmmBaseImpl::run (this=0x1300ba0) at /emasrc/Elektron-SDK-Elektron-SDK-1.3.0.L1/Cpp-C/Ema/Src/Access/Impl/OmmBaseImpl.cpp:1943

11 0x00000000004bfdb4 in thomsonreuters::ema::access::Thread::runThread (arg=0x1300bc8) at /emasrc/Elektron-SDK-Elektron-SDK-1.3.0.L1/Cpp-C/Ema/Src/Access/Impl/Thread.cpp:67

12 0x0000003300607aa1 in start_thread () from /lib64/libpthread.so.0

13 0x00000033002e8bdd in ?? () from /lib64/libc.so.6

14 0x0000000000000000 in ?? ()

geoffmallard commented 5 years ago

@its-b Thank you for submitting the debug stack trace. This could be resolved along with current investigations into a similar area of logic.

its-b commented 5 years ago

Sounds good. If you have a test/beta binary package and/or source code patch/package I am happy to be a tester once available.

The only other thing I can think to do is provide a trace of the service create/destroy sequence around the crash. The output would be similar to this which uses a failover scenario by way of example with the service destroy after the group remove as expected (no crash). Let me know if you think this trace would be useful or I can add any other trace logging you require.

//trace logging of service allocation //normal startup wlServiceCreate pWlService=0x79fd090 wlServiceCreate pWlService=0x79fd2d0 wlServiceCreate pWlService=0x79fd510 wlItemGroupAddStream new pItemGroup=0x79fe140 pItemGroup->pWlService=0x79fd090 wlItemGroupAddStream pItemGroup=0x79fe140 wlItemGroupAddStream pItemGroup=0x79fe140 wlItemGroupAddStream new pItemGroup=0x7f0568004cb0 pItemGroup->pWlService=0x79fd2d0 wlItemGroupAddStream pItemGroup=0x7f0568004cb0 wlItemGroupAddStream new pItemGroup=0x7f0568005ee0 pItemGroup->pWlService=0x79fd2d0 wlItemGroupAddStream pItemGroup=0x7f0568005ee0 wlItemGroupAddStream pItemGroup=0x7f0568004cb0

//trep failover wlItemGroupRemove begin wlItemGroupRemove pItemGroup=0x79fe140 wlItemGroupRemove pItemGroup->pWlService=0x79fd090 wlItemGroupRemove rsslHashTableRemoveLink wlItemGroupRemove rsslQueueRemoveLink wlItemGroupRemove rsslHeapBufferCleanup wlItemGroupRemove free(pItemGroup) wlItemGroupRemove end wlServiceDestroy pWlService=0x79fd090 wlItemGroupRemove begin wlItemGroupRemove pItemGroup=0x7f0568005ee0 wlItemGroupRemove pItemGroup->pWlService=0x79fd2d0 wlItemGroupRemove rsslHashTableRemoveLink wlItemGroupRemove rsslQueueRemoveLink wlItemGroupRemove rsslHeapBufferCleanup wlItemGroupRemove free(pItemGroup) wlItemGroupRemove end wlItemGroupRemove begin wlItemGroupRemove pItemGroup=0x7f0568004cb0 wlItemGroupRemove pItemGroup->pWlService=0x79fd2d0 wlItemGroupRemove rsslHashTableRemoveLink wlItemGroupRemove rsslQueueRemoveLink wlItemGroupRemove rsslHeapBufferCleanup wlItemGroupRemove free(pItemGroup) wlItemGroupRemove end wlServiceDestroy pWlService=0x79fd2d0 wlServiceDestroy pWlService=0x79fd510 wlServiceCreate pWlService=0x7f0568011760 wlServiceCreate pWlService=0x7f0568011a00 wlServiceCreate pWlService=0x7f0568011c40 wlItemGroupAddStream new pItemGroup=0x7f0568011d50 pItemGroup->pWlService=0x7f0568011760 wlItemGroupAddStream pItemGroup=0x7f0568011d50 wlItemGroupAddStream pItemGroup=0x7f0568011d50 wlItemGroupAddStream new pItemGroup=0x7f0568015c50 pItemGroup->pWlService=0x7f0568011760 wlItemGroupAddStream pItemGroup=0x7f0568015c50

//interrupt ^C wlItemGroupRemove begin wlItemGroupRemove pItemGroup=0x7f0568015c50 wlItemGroupRemove pItemGroup->pWlService=0x7f0568011760 wlItemGroupRemove rsslHashTableRemoveLink wlItemGroupRemove rsslQueueRemoveLink wlItemGroupRemove rsslHeapBufferCleanup wlItemGroupRemove free(pItemGroup) wlItemGroupRemove end wlItemGroupRemove begin wlItemGroupRemove pItemGroup=0x7f0568011d50 wlItemGroupRemove pItemGroup->pWlService=0x7f0568011760 wlItemGroupRemove rsslHashTableRemoveLink wlItemGroupRemove rsslQueueRemoveLink wlItemGroupRemove rsslHeapBufferCleanup wlItemGroupRemove free(pItemGroup) wlItemGroupRemove end wlServiceDestroy pWlService=0x7f0568011760 wlServiceDestroy pWlService=0x7f0568011a00 wlServiceDestroy pWlService=0x7f0568011c40

its-b commented 5 years ago

Reopened - did not mean to close it ...

brettjbush commented 5 years ago

@its-b - thank you for the trace output and steps to reproduce. We are now able to reproduce this scenario in our environment and are currently investigating and developing a solution to the issue.

soranat commented 4 years ago

@its-b This issue was fixed in Elektron-SDK version 1.3.1.G2.

Please let us know if fix addresses the issue you've reported. Closing for now - please re-open as needed.