Here is the actual java code corresponding to the culprit function.

    // this is used only during board construction, when we populate
>     // the board array with cells, or subtypes of cells.
>     void SetBoardCell(char col,int row,CELLTYPE con)
>     {    int y = BCtoYindex(col,row);
>         int x = BCtoXindex(col,row);
>         char nc = XindexToBC(x,y);
>         int nr = YindexToBC(x,y);
>         // a little consistency check
>         //System.out.println("C "+nc + col);
>         G.Assert(((nc==col) && (nr==row)),"%s,%s encodes 
> correctly",col,row);
>         board[x][y]=con;
>     }
>
> The crash corresponds to the internal bounds check on the board[x][y] = 
con line.  


On Friday, November 11, 2016 at 2:42:31 PM UTC-8, Dave Dyer wrote:
>
>
> A new IOS hard crash has appeared.   I reproduced this by building from 
> the sources on my mac.  It's going to be really
> hard to extract a small test case without some clue what features of the 
> java sources are triggering the problem.  Note
> that this is not recently changed code, and previous builds worked fine.
>
> Here's the .m code that is crashing.  The crash is at the 
> "check_array_acccess" near the bottom, the error
> in the IOS simulator is EXC_BAD_ACCESS code-1 address = 0x36.   
>
> My working hypothesis would be that some recently tweaked optimization
> has resulted in a mismanaged stack.
>
> JAVA_VOID 
>> online_game_gBoard_SetBoardCell___char_int_online_game_cell(CODENAME_ONE_THREAD_STATE,
>>  
>> JAVA_OBJECT  __cn1ThisObject, JAVA_CHAR __cn1Arg1, JAVA_INT __cn1Arg2, 
>> JAVA_OBJECT __cn1Arg3) {
>>     JAVA_INT ilocals_5_; /* v5 */
>>     JAVA_INT ilocals_4_; /* v4 */
>>     JAVA_INT ilocals_7_; /* v7 */
>>     JAVA_INT ilocals_6_; /* v6 */
>>     DEFINE_INSTANCE_METHOD_STACK(6, 8, 0, 11210, 11226);
>>     locals[0].data.o = __cn1ThisObject; locals[0].type = 
>> CN1_TYPE_OBJECT;     JAVA_INT ilocals_1_ = __cn1Arg1;
>>     JAVA_INT ilocals_2_ = __cn1Arg2;
>>     locals[3].data.o = __cn1Arg3;
>>     locals[3].type = CN1_TYPE_OBJECT;
>>     BC_ALOAD(0);
>>     /* CustomInvoke */{ JAVA_INT tmpResult = 
>> virtual_online_game_gBoard_BCtoYindex___char_int_R_int(threadStateData, 
>> SP[-1].data.o, ilocals_1_, ilocals_2_);
>>     SP[-1].data.i = tmpResult; SP[-1].type = CN1_TYPE_INT; }
>>     BC_ISTORE(4);
>>     BC_ALOAD(0);
>>     /* CustomInvoke */{ JAVA_INT tmpResult = 
>> virtual_online_game_gBoard_BCtoXindex___char_int_R_int(threadStateData, 
>> SP[-1].data.o, ilocals_1_, ilocals_2_);
>>     SP[-1].data.i = tmpResult; SP[-1].type = CN1_TYPE_INT; }
>>     BC_ISTORE(5);
>>     BC_ALOAD(0);
>>     /* CustomInvoke */{ JAVA_INT tmpResult = 
>> virtual_online_game_gBoard_XindexToBC___int_int_R_char(threadStateData, 
>> SP[-1].data.o, ilocals_5_, ilocals_4_);
>>     SP[-1].data.i = tmpResult; SP[-1].type = CN1_TYPE_INT; }
>>     BC_ISTORE(6);
>>     BC_ALOAD(0);
>>     /* CustomInvoke */{ JAVA_INT tmpResult = 
>> virtual_online_game_gBoard_YindexToBC___int_int_R_int(threadStateData, 
>> SP[-1].data.o, ilocals_5_, ilocals_4_);
>>     SP[-1].data.i = tmpResult; SP[-1].type = CN1_TYPE_INT; }
>>     BC_ISTORE(7);
>>     if (    ilocals_6_!=    ilocals_1_) /* IF_ICMPNE CustomJump */ goto 
>> label_L1749010499;
>>     if (    ilocals_7_!=    ilocals_2_) /* IF_ICMPNE CustomJump */ goto 
>> label_L1749010499;
>>     PUSH_INT(1); /* ICONST_1 */
>>     goto label_L863296557;
>>
>> label_L1749010499:
>>     PUSH_INT(0); /* ICONST_0 */
>>
>> label_L863296557:
>>     /* LDC: '%s,%s encodes correctly'*/
>>     PUSH_POINTER(STRING_FROM_CONSTANT_POOL_OFFSET(11227));
>>     PUSH_INT(2); /* ICONST_2 */
>>     SP--;
>>     PUSH_POINTER(__NEW_ARRAY_java_lang_Object(threadStateData, 
>> SP[0].data.i));
>>     BC_DUP(); /* DUP */
>>     PUSH_INT(0); /* ICONST_0 */
>>     /* CustomInvoke 
>> */PUSH_OBJ(java_lang_Character_valueOf___char_R_java_lang_Character(threadStateData,
>>  
>> ilocals_1_));
>>     CHECK_ARRAY_ACCESS(3, SP[-2].data.i); { /* BC_AASTORE */
>>     JAVA_OBJECT aastoreTmp = SP[-3].data.o; 
>>     ((JAVA_ARRAY_OBJECT*) (*(JAVA_ARRAY)aastoreTmp).data)[SP[-2].data.i] 
>> = SP[-1].data.o; 
>>     SP -= 3; }
>>     BC_DUP(); /* DUP */
>>     PUSH_INT(1); /* ICONST_1 */
>>     /* CustomInvoke 
>> */PUSH_OBJ(java_lang_Integer_valueOf___int_R_java_lang_Integer(threadStateData,
>>  
>> ilocals_2_));
>>     CHECK_ARRAY_ACCESS(3, SP[-2].data.i); { /* BC_AASTORE */
>>     JAVA_OBJECT aastoreTmp = SP[-3].data.o; 
>>     ((JAVA_ARRAY_OBJECT*) (*(JAVA_ARRAY)aastoreTmp).data)[SP[-2].data.i] 
>> = SP[-1].data.o; 
>>     SP -= 3; }
>>     { JAVA_INT tmpResult = 
>> lib_G_Assert___boolean_java_lang_String_java_lang_Object_1ARRAY_R_boolean(threadStateData,
>>  
>> SP[-3].data.i, SP[-2].data.o, SP[-1].data.o);
>>     SP-=2;
>>     SP[-1].data.i = tmpResult; SP[-1].type = CN1_TYPE_INT; }
>>     SP--; /* POP */
>>     PUSH_POINTER(get_field_online_game_gBoard_board(__cn1ThisObject));
>>     (*SP).type = CN1_TYPE_INT; /* ILOAD */ 
>>     (*SP).data.i = ilocals_5_; 
>>     SP++;
>>     CHECK_ARRAY_ACCESS(2, SP[-1].data.i); /* AALOAD */
>>     SP--; SP[-1].type = CN1_TYPE_INVALID; 
>>     SP[-1].data.o = ((JAVA_ARRAY_OBJECT*) 
>> (*(JAVA_ARRAY)SP[-1].data.o).data)[(*SP).data.i]; 
>>     SP[-1].type = CN1_TYPE_OBJECT; 
>>     (*SP).type = CN1_TYPE_INT; /* ILOAD */ 
>>     (*SP).data.i = ilocals_4_; 
>>     SP++;
>>     BC_ALOAD(3);
>>     CHECK_ARRAY_ACCESS(3, SP[-2].data.i); { /* BC_AASTORE */
>>     JAVA_OBJECT aastoreTmp = SP[-3].data.o; 
>>     ((JAVA_ARRAY_OBJECT*) (*(JAVA_ARRAY)aastoreTmp).data)[SP[-2].data.i] 
>> = SP[-1].data.o; 
>>     SP -= 3; }
>>     releaseForReturn(threadStateData, cn1LocalsBeginInThread); 
>>     return;
>> }
>>
>
>
>  
>

-- 
You received this message because you are subscribed to the Google Groups 
"CodenameOne Discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
Visit this group at https://groups.google.com/group/codenameone-discussions.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/codenameone-discussions/02d3f87f-0e7c-4c31-a794-202128859efe%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to