SDKBOX iap 2.4.3.3 crash on Android

cocos2dx 3.17.1 (C++)
sdkbox iap 2.4.3.3
android ndk r16b
android cmake

I can not reproduce it.
It may be a random crash.

crash log.

#00  pc 00000000000233e0  [anon:libc_malloc:0000007ae0000000]
  #01  pc 00000000009aca68  /data/app/jp.co.hoge.myapp-WdQGd9a0neWi8XHfb32g2Q==/lib/arm64/libMyGame.so (sdkbox::IAPWrapperEnabled::onInitialized(bool)+52)
  #02  pc 00000000009b6434  /data/app/jp.co.hoge.myapp-WdQGd9a0neWi8XHfb32g2Q==/lib/arm64/libMyGame.so (Java_com_sdkbox_plugin_IAPWrapper_nativeOnInitialized+36)
  #03  pc 000000000001e308  /data/app/jp.co.hoge.myapp-WdQGd9a0neWi8XHfb32g2Q==/oat/arm64/base.odex (com.sdkbox.adbooster.AdBooster.nativeSetEnable [DEDUPED]+152)
  #04  pc 000000000055524c  /system/lib64/libart.so (art_quick_invoke_static_stub+604)
  #05  pc 00000000000cf6e8  /system/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+232)
  #06  pc 000000000027f2c0  /system/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+344)
  #07  pc 00000000002792c8  /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+968)
  #08  pc 0000000000525c20  /system/lib64/libart.so (MterpInvokeStatic+204)
  #09  pc 0000000000547814  /system/lib64/libart.so (ExecuteMterpImpl+14612)
  #10  pc 0000000000301dd0  /data/app/jp.co.hoge.myapp-WdQGd9a0neWi8XHfb32g2Q==/oat/arm64/base.vdex (com.sdkbox.plugin.IAPWrapper.access$000)
  #11  pc 0000000000252fcc  /system/lib64/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadERKNS_20CodeItemDataAccessorERNS_11ShadowFrameENS_6JValueEb.llvm.3783761849+488)
  #12  pc 0000000000258ac0  /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+216)
  #13  pc 00000000002792ac  /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+940)
  #14  pc 0000000000525c20  /system/lib64/libart.so (MterpInvokeStatic+204)
  #15  pc 0000000000547814  /system/lib64/libart.so (ExecuteMterpImpl+14612)
  #16  pc 0000000000301b4c  /data/app/jp.co.hoge.myapp-WdQGd9a0neWi8XHfb32g2Q==/oat/arm64/base.vdex (com.sdkbox.plugin.IAPWrapper$1.run+4)
  #17  pc 0000000000252fcc  /system/lib64/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadERKNS_20CodeItemDataAccessorERNS_11ShadowFrameENS_6JValueEb.llvm.3783761849+488)
  #18  pc 0000000000514fb0  /system/lib64/libart.so (artQuickToInterpreterBridge+1020)
  #19  pc 000000000055e0fc  /system/lib64/libart.so (art_quick_to_interpreter_bridge+92)
  #20  pc 0000000000aaf8c0  /system/framework/arm64/boot-framework.oat (android.opengl.GLSurfaceView$GLThread.guardedRun+2512)
  #21  pc 0000000000ab0e00  /system/framework/arm64/boot-framework.oat (android.opengl.GLSurfaceView$GLThread.run+224)
  #22  pc 0000000000554f88  /system/lib64/libart.so (art_quick_invoke_stub+584)
  #23  pc 00000000000cf6c8  /system/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200)
  #24  pc 000000000045c84c  /system/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104)
  #25  pc 000000000045d908  /system/lib64/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue*)+424)
  #26  pc 00000000004887a4  /system/lib64/libart.so (art::Thread::CreateCallback(void*)+1120)
  #27  pc 00000000000906bc  /system/lib64/libc.so (__pthread_start(void*)+36)
  #28  pc 0000000000023cf8  /system/lib64/libc.so (__start_thread+68)

how do you use the iap plugin ?

There was no crash in Sdkbox IAP 2.4.1.1
I have not changed the code.

I did an actual machine test from Android 5 to 8, but did not crash.

The place using SDKBox IAP is as follows.

AppDelegate.cpp

bool AppDelegate::applicationDidFinishLaunching() {
    sdkbox::IAP::init();
    sdkbox::IAP::setDebug(false);
    ...
}

ShopLayer.cpp

bool ShopLayer::init() {
    ...
    _products = sdkbox::IAP::getProducts();
    sdkbox::IAP::setListener(this);
    ...
}

void ShopLayer::buttonBuy1Callback(Ref* sender, ui::Widget::TouchEventType type)
    ...
    IAP::purchase("coin1");
    ...
}

I am trying to reproduce, but I do not reproduce it yet.

I added “android”> “iap”> “key” to sdkbox_config.json.
Is there a relation here?

Also, most users send crash reports only once.
Is there a possibility that the last IAP data is cached and crash?

solved
because of forgetting removeListener()

There was no callback function in the next “sdkbox::IAP::init()” and it crashed

I don’t know why “sdkbox::IAP::init()” of “applicationDidFinishLaunching()” is called twice

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.