This problem has troubled me for a long time, and I hope someone kind can help me.
When I was doing a hal program on android12, I encountered such an error "Cannot do a user transaction on a system stability wire protocol version 1 binder (android.hardware.invcase.Callbacks) in a vendor stability context.
"
android 12 + aidl + hal server + app clint.
Below I describe in detail.
catlog:
header 1 | header 2 | header 2 |
---|---|---|
Invcase | clint log | E ------onItemClick----- create |
IInvcase | clint log | E ---create---step---1-- |
IInvcase | server log | E invcase_sever create 1 |
IBpBinder | pid-381 | E Cannot do a user transaction on a system stability wire protocol version 1 binder (android.hardware.invcase.Callbacks) in a vendor stability context. |
IInvcase | server log | E invcase_sever create 2 |
IInvcase | clint log | E ---createVics---step---2-- create |
IInvcase | clint log | E ---createVics---step---3-- create |
hal server code:
ndk::ScopedAStatus Invcase::create(const std::shared_ptr<ICallbacks>& in_callbacks,
std::shared_ptr<IVics>* _aidl_return) {
ALOGE("invcase_sever create 1");
in_callbacks->OnCallBackSleep("test");
ALOGE("invcase_sever create 2");
........
I expect that when the underlying hardware encounters a specific event, the upper layer application can be notified. For this reason, in the initialization phase, the upper application client will set some callback functions to the hal server. In fact, when the hal server calls these functions, the system will report an error.