Skip to contentSkip to conversation

atmodem: gprs context deactivate crashes ofonod

DISCUSSION Kalle Valo 2 participants 3 messages May 19, 2010 – May 20, 2010

lore
Share & tools
lore

Kalle Valo

author
#0 lore raw

Hello again,

I have been testing ofono with my Huawei E1552 usb stick, which is using atmodem and PPP. I noticed that whenever I call test/deactivate-context ofono either crashes or busyloops here in at_gprs_deactivate_primary():

	if (g_at_chat_send(gcd->chat, buf, none_prefix,
				at_cgact_down_cb, cbd, g_free) > 0)
		return;

Further investigation revealed that gcd->chat is already unreferenced in setup_ppp():

	g_at_chat_unref(gcd->chat);

So there's a conflict here. How to handle this properly? Calling g_at_ppp_shutdown() is most likely not enough, because nobody is not creating gcd->chat again which is needed during subsequent activate call.

Comments?

Signature · 1 line
Kalle Valo
#1 lore raw

Hi Kalle,

Quoted 13 lines

Hello again,

I have been testing ofono with my Huawei E1552 usb stick, which is using atmodem and PPP. I noticed that whenever I call test/deactivate-context ofono either crashes or busyloops here in at_gprs_deactivate_primary():

	if (g_at_chat_send(gcd->chat, buf, none_prefix,
				at_cgact_down_cb, cbd, g_free) > 0)
		return;

Further investigation revealed that gcd->chat is already unreferenced in setup_ppp():

Quoted 9 lines
	g_at_chat_unref(gcd->chat);

So there's a conflict here. How to handle this properly? Calling g_at_ppp_shutdown() is most likely not enough, because nobody is not creating gcd->chat again which is needed during subsequent activate call.

Comments?

Deactivation of the context was never made to work properly. For a hint, please have a look at gatchat/gsmdial.c. When PPP is established we should be using g_at_chat_suspend. During a context deactivation we should use g_at_ppp_shutdown and then reactivate the gatchat using g_at_chat_resume (assuming the Huawei does not HUP the tty when disconnecting the ppp link.)

Regards,
-Denis

author
#2 lore raw
Quoted 1 line · Denis Kenzior

Hi Kalle,

Hi Denis,

Quoted 18 lines
Quoted 18 lines

I have been testing ofono with my Huawei E1552 usb stick, which is using atmodem and PPP. I noticed that whenever I call test/deactivate-context ofono either crashes or busyloops here in at_gprs_deactivate_primary():

	if (g_at_chat_send(gcd->chat, buf, none_prefix,
				at_cgact_down_cb, cbd, g_free) > 0)
		return;

Further investigation revealed that gcd->chat is already unreferenced in setup_ppp():

	g_at_chat_unref(gcd->chat);

So there's a conflict here. How to handle this properly? Calling g_at_ppp_shutdown() is most likely not enough, because nobody is not creating gcd->chat again which is needed during subsequent activate call.

Quoted 8 lines
Quoted 2 lines

Comments?

Deactivation of the context was never made to work properly. For a hint, please have a look at gatchat/gsmdial.c. When PPP is established we should be using g_at_chat_suspend. During a context deactivation we should use g_at_ppp_shutdown and then reactivate the gatchat using g_at_chat_resume

Ok, thank you for the tips. I'll take a look at this later, I have to fix some other issues first.

Quoted 2 lines

(assuming the Huawei does not HUP the tty when disconnecting the ppp link.)

Let's hope not.

Signature · 1 line
Kalle Valo