Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ikcp_release crash in android #437

Open
nikohpng opened this issue Feb 5, 2025 · 4 comments
Open

ikcp_release crash in android #437

nikohpng opened this issue Feb 5, 2025 · 4 comments

Comments

@nikohpng
Copy link

nikohpng commented Feb 5, 2025

Description

I meet it in android when I call ikcp_release method. maybe I have a error usage,someone can give me some suggestion?

Version

libkcp
this version maybe old, but I have compare lastest ikcp, have no any big change.

Stack

Build fingerprint: 'HUAWEI/BLA-AL00/HWBLA:10/HUAWEIBLA-AL00/10.0.0.175C00:user/release-keys'
Revision: '0'
ABI: 'arm64'
SYSVMTYPE: Maple
APPVMTYPE: Art
Timestamp: 2025-01-23 15:17:01+0800
pid: 1660, tid: 1660, name: example.sdkdemo  >>> com.example.sdkdemo <<<
uid: 10216
signal 11 (SIGSEGV), code 0 (SI_USER), fault addr --------
    x0  0000000000000000  x1  000000000000000b  x2  0000007e600a702d  x3  0000007e70b8bdd0
    x4  000000000000067c  x5  0000000000000a18  x6  0000007f58c7f000  x7  000000000067a5a2
    x8  0000000000000081  x9  5ac2e86c936621d5  x10 0000006485e613e8  x11 0000007f58cd701c
    x12 0000000000000058  x13 00000000fa000000  x14 0009e793d93c013d  x15 000013726f2a9dec
    x16 0000007e600c0cb8  x17 0000007f55ac6880  x18 0000007f588ce000  x19 000000000000000b
    x20 0000007e600a85b1  x21 0000007e70b8bdd0  x22 000000000000067c  x23 0000000000000000
    x24 0000007e600f8f18  x25 0000007f579c5020  x26 0000007e600f9030  x27 0000006485e61000
    x28 0000000018000004  x29 0000007eba75c140
    sp  0000007eba75c0a0  lr  0000007e6008b54c  pc  0000007f55ac6888

backtrace:
      #00 pc 00000000000bb888  /apex/com.android.runtime/lib64/bionic/libc.so (kill+8) (BuildId: b91c775ccc9b0556e91bc575a2511cd0)
      #01 pc 0000000000009548  /data/app/com.example.sdkdemo-y80BX0J4iay1x3XA-JgTFw==/lib/arm64/libBugly_Native.so (BuildId: b9c637d9e30c4ad0f33ec781b10389b2453ce17f)
      #02 pc 0000000000004cb8  /system/bin/app_process64 (art::SignalChain::Handler(int, siginfo*, void*)+352) (BuildId: e844be217eb39b34490d3798328d1f12)
      #03 pc 0000000000000638  [vdso] (__kernel_rt_sigreturn)
      #04 pc 00000000008e2a30  /data/app/com.example.sdkdemo-y80BX0J4iay1x3XA-JgTFw==/lib/arm64/libonesip.so (ikcp_release+140) (BuildId: 9785b490b670210163b41b6d23e825724d6702c1)
      #05 pc 00000000008dddb0  /data/app/com.example.sdkdemo-y80BX0J4iay1x3XA-JgTFw==/lib/arm64/libonesip.so (UDPSession::Destroy(UDPSession*)+80) (BuildId: 9785b490b670210163b41b6d23e825724d6702c1)
      #06 pc 00000000008dc670  /data/app/com.example.sdkdemo-y80BX0J4iay1x3XA-JgTFw==/lib/arm64/libonesip.so (Session_C_Destroy+20) (BuildId: 9785b490b670210163b41b6d23e825724d6702c1)
@skywind3000
Copy link
Owner

are you using one kcp object in different threads?

@nikohpng
Copy link
Author

nikohpng commented Feb 5, 2025

are you using one kcp object in different threads?

when I use it , i will lock it. this is my code , like this

      // this will call pthread_mutex_lock, I have open PTHREAD_MUTEX_RECURSIVE
        status = lock_acquire(tp->timer_lock);
        if (status != SUCCESS) {
            LOG(4, ("kcp session restarted failed, lock is null"));
            return status;
        }
        itr = hash_first(tp->all_sess, &itr_val);
        char key[0x50] = {'\0'};
        while (itr) {
            void *entry = hash_this(tp->all_sess, itr);
            const char *k = Session_C_GetAddrStr(entry);
            memcpy(key, k, ansi_strlen(k));
            LOG(5, (THIS_FILE, "kcp restart session: %s, %d ready to release it", key, ansi_strlen(key)));
            Session_C_Destroy(entry);
            entry = NULL;
            hash_set(NULL, tp->all_sess, key, ansi_strlen(key), 0, entry);
            itr = hash_next(tp->all_sess, itr);
        }
        status = lock_release(tp->timer_lock);
        if (status != SUCCESS) {
            LOG(4, (tp->base.obj_name,"SIP kcp session restarted failed, lock release is null"));
            return status;
        }

and This crash only occurs once on Huawei phones. At present, there is no recurrence

@skywind3000
Copy link
Owner

It has nothing to do with specific hardware, pure algorithm code.

@nikohpng
Copy link
Author

nikohpng commented Feb 6, 2025

It has nothing to do with specific hardware, pure algorithm code.

I know. I have found a crash fix in latest issue, It may be caused by it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants