Hi Henrik,
Removing all variables from the LOGD calls did not change anything.

After multiple experiments with the placement of LOGD's, I believe it is
crashing whenever property_get is executed.  Can never get by that:

        len = property_get("net.gprs.local-ip",response[2], NULL);

I printed out response[0], [1], and [2], before this call and they look
correct..
Mike

On Mon, May 17, 2010 at 8:06 AM, Uhrenfeldt Henrik <
henrik.uhrenfe...@ixonos.com> wrote:

> Hi Mike,
>
> I still think the RIL crashes if you get the two lines:
>
>        E/RILJ    (  929): Hit EOS reading message length
>        I/RILJ    (  929): Disconnected from 'rild' socket
>
> The log message is confusing because the java process somehow finishes its
> ongoing function call through JNI when the lowlevel RIL crashes. If changing
> the invalid index did not do the trick, then we have to look for something
> else. Try modifying your debug line not to reference any variables at all -
> we need to make sure that RIL does not crash..
>
> Regarding the setting of local-ip in ip-down, I thought about the very same
> thing, but you end up in trouble waiting for local-ip being set if fx. ppp
> fails to initialize (this happens in my setup from time to time). In that
> case you need to wait for both ppp exit code AND local-ip. Thus I ended up
> making one single property which was being set from both ppp-init script
> (after PPP exit) as well as ip-up and ip-down.
>
> - Henrik
>
> -----Original Message-----
> From: M&M stich [mailto:mstic...@gmail.com]
> Sent: 17. maj 2010 14:57
> To: Uhrenfeldt Henrik; android-porting
> Subject: Re: Data connection via cell modem (GPRS)
>
> Yes, I noticed that shortly after I sent the message.  Fixing it did not
> change anything.
>
> It appears that readRilMessage in RIL.java is executing before the response
> is sent.  I don't understand why this should happen.
>
> I was going to clear the net.gprs.local-ip property in the ip-down script
> so that it would work multiple times.  Then it could be reset in the ip-up
> script like it currently is.  Would that not work similarly to another
> property?
>
> Thanks much for the help.
> Mike
>
>
> On Mon, May 17, 2010 at 2:27 AM, Uhrenfeldt Henrik <
> henrik.uhrenfe...@ixonos.com> wrote:
>
>
>        Hi Stich,
>
>        Please keep the list on copy - then everybody will learn from this
> :-)
>
>        Anyway, I think your problem is in the line:
>
>
>        LOGD(" --- PPPD started successfully; IP local : %s  Retry count :
> %d",response[3],retry);
>
>
>        In fact response[] is only three elements big, and you refer to
> index 3 instead of 2. I bet the code successfully exits the loop and
> attempts to execute the debug print, hits a NULL pointer and the low-level
> part of RIL crashes. This is confirmed by the debug lines
>
>
>        E/RILJ    (  929): Hit EOS reading message length
>        I/RILJ    (  929): Disconnected from 'rild' socket
>
>
>        I have crashed the low-level RIL many times, and every time I get
> this message :-)
>
>        I bet that if you change response[3] to response[2] it will be
> working. That being said this will work only once, since next time you
> attempt connection, local-ip will be set already. I introduced yet another
> property which I set to a kind of state information (ie.
> down/initializing/up). Again this synchronization through properties really
> is the worst part of this setup, and I have been able to stabilize it
> 100%...
>
>        - Henrik
>
>
>        -----Original Message-----
>        From: M&M stich [mailto:mstic...@gmail.com]
>        Sent: 14. maj 2010 21:44
>        To: Robert Greenwalt; Uhrenfeldt Henrik
>        Subject: Data connection via cell modem (GPRS)
>
>        Made some progress.  When SETUP_DATA_CALL is called, my ril starts
> the pppd via ctl.start, and that seems to work.  The deamon does seem to
> start and the associated properties seem to be set. (Doing a "start service"
> from the console works)   I've put log messages at each step, when it
> starts, when it waits for the local-ip property to be set (which is set in
> ip-up), when that completes, and when it does the RilRequestComplete call.
>
>        It never gets  to the end.  RIL.java seems to think it has a
> response  before the request completes, then errors out because it reached
> "EOS"   Here is a snippet of the radio logcat.  Messages that have "---" are
> ones I put in the reference-ril in the SETUP_DATA_CALL.  There should be the
> 4 mentioned above.  It never finishes the wait for the local-ip property.
>
>        I can't figure out why RIL.java thinks it should go read a response
> before there has been a reply to the request.
>        Thanks.
>        Mike
>        ------------------------------------------------------------------
>        D/GSM     (  929): [GsmSimCard] Broadcasting intent
> SIM_STATE_CHANGED_ACTION LOADED reason null
>        D/GSM     (  929): Get PreferredAPN
>        D/GSM     (  929): [GsmDataConnectionTracker] ***trySetupData due to
> simLoaded
>        D/GSM     (  929): [DSAC DEB] trySetupData with
> mIsPsRestricted=false
>        D/GSM     (  929): [GsmDataConnectionTracker] Create from allApns :
> [ATT, 1, 310410, wap.cingular,  wireless.cingular.com,
> http://mmsc.cingular.com, null, null, 80, *]
>        D/GSM     (  929): [GsmDataConnectionTracker] Setup watingApns :
> [ATT, 1, 310410, wap.cingular,  wireless.cingular.com,
> http://mmsc.cingular.com, null, null, 80, *]
>        D/GSM     (  929): [PdpConnection] DataConnection.getState()
>        D/GSM     (  929): [PdpConnection] Connecting to carrier: 'ATT' APN:
> 'wap.cingular' proxy: ' wireless.cingular.com' port: '80
>        D/RILJ    (  929): [0060]> SETUP_DATA_CALL wap.cingular
>        D/RIL     (  811): onRequest: SETUP_DATA_CALL
>        D/RIL     (  811): requesting data connection to APN 'wap.cingular'
>        D/RIL     (  811):  ---- Starting service pppd_gprs -----
>        D/RIL     (  811):  ---- starting wait for property -----  prop set
> return code is 0
>        D/GSM     (  929): [GsmDataConnectionTracker] setState: INITING
>        E/RILJ    (  929): Hit EOS reading message length
>        I/RILJ    (  929): Disconnected from 'rild' socket
>
>        Here is the code:
>               err = property_set("ctl.start","pppd_gprs");    // Tell init
> to start the pppd_gprs service
>               LOGD(" ---- Starting service pppd_gprs ----- ");
>               if(err<0)
>               {
>                   LOGD("####  error in starting service pppd_gprs;  err :
>  %d",err);
>                   goto error;
>               }
>               retry = 100;
>               LOGD(" ---- starting wait for property -----  prop set return
> code is %d",err);
>               while((property_get("net.gprs.local-ip",response[2], "") <=
> 0) && --retry)
>               {
>                   usleep(5*1000);        // sleep 5ms
>               }
>
>               LOGD(" --- PPPD started successfully; IP local : %s  Retry
> count : %d",response[3],retry);
>               ......
>           LOGD(" --- Returning from setup data call, response length is
> %d",sizeof(response));
>           RIL_onRequestComplete(t, RIL_E_SUCCESS, response,
> sizeof(response));
>
>
>
>
>
>
>
>

-- 
unsubscribe: android-porting+unsubscr...@googlegroups.com
website: http://groups.google.com/group/android-porting

Reply via email to