Hi,

I have a larger 512x512 32-bit ARGB Bitmap loaded from a PNG in my
application. I traverse each pixel in this bitmap as follows:

int height = bitmap.getHeight()-1;
for( int y = 0; y < bitmap.getHeight(); y++ )
{
   for( int x = 0; x < bitmap.getWidth(); x++ )
   {
      int pixel = bitmap.getPixel( x, y);
      collisionMap[x][height-y] =  pixel != -1 ?(byte)BACKGROUND_PIXEL:
0;
   }
}

I check each pixel in the bitmap for a specific color value and set a
byte in a corresponding 2D array that has the same dimensions as the
image. This works perfectly fine on my droid, on my hero as well as on
the emulator. I send the app containing this code to some other people
that have a g1 and a mytouch and there this few lines fail horribly
with a segfault:

02-01 17:47:25.532 I/ActivityManager(   74): Process
android.process.media (pid 3920) has died.
02-01 17:47:25.622 I/DEBUG   (   48): *** *** *** *** *** *** *** ***
*** *** *** *** *** *** *** ***
02-01 17:47:25.622 I/DEBUG   (   48): Build fingerprint: 'tmobile/opal/
sapphire/sapphire:1.6/DRC92/15632:user/ota-rel-keys,release-keys'
02-01 17:47:25.622 I/DEBUG   (   48): pid: 4033, tid: 4039  >>>
com.badlogic.doodleescape <<<
02-01 17:47:25.622 I/DEBUG   (   48): signal 7 (SIGBUS), fault addr
00000000
02-01 17:47:25.622 I/DEBUG   (   48):  r0 44527d84  r1 4622700a  r2
00000001  r3 00000000
02-01 17:47:25.622 I/DEBUG   (   48):  r4 00000001  r5 4622700a  r6
44527d84  r7 4104be78
02-01 17:47:25.622 I/DEBUG   (   48):  r8 44527d9c  r9 4104be6c  10
4104be5c  fp 00000001
02-01 17:47:25.622 I/DEBUG   (   48):  ip 4622700a  sp 44527d70  lr
ad346c1f  pc ad3469a0  cpsr 00000030
02-01 17:47:26.242 I/DEBUG   (   48):          #00  pc 000469a0  /
system/lib/libandroid_runtime.so
02-01 17:47:26.242 I/DEBUG   (   48):          #01  pc 00046c1c  /
system/lib/libandroid_runtime.so
02-01 17:47:26.242 I/DEBUG   (   48):          #02  pc 0000e434  /
system/lib/libdvm.so
02-01 17:47:26.252 I/DEBUG   (   48): stack:
02-01 17:47:26.252 I/DEBUG   (   48):     44527d30  ad083e1c  /system/
lib/libdvm.so
02-01 17:47:26.252 I/DEBUG   (   48):     44527d34  ad0159f4  /system/
lib/libdvm.so
02-01 17:47:26.252 I/DEBUG   (   48):     44527d38  0000032c
02-01 17:47:26.252 I/DEBUG   (   48):     44527d3c  0000002a
02-01 17:47:26.252 I/DEBUG   (   48):     44527d40  00000054
02-01 17:47:26.252 I/DEBUG   (   48):     44527d44  ad083e1c  /system/
lib/libdvm.so
02-01 17:47:26.252 I/DEBUG   (   48):     44527d48  00000064
02-01 17:47:26.262 I/DEBUG   (   48):     44527d4c  0000001a
02-01 17:47:26.262 I/DEBUG   (   48):     44527d50  00000000
02-01 17:47:26.262 I/DEBUG   (   48):     44527d54  4104be78
02-01 17:47:26.262 I/DEBUG   (   48):     44527d58  00000001
02-01 17:47:26.262 I/DEBUG   (   48):     44527d5c  41c3a728  /system/
framework/framework.odex
02-01 17:47:26.262 I/DEBUG   (   48):     44527d60  00000003
02-01 17:47:26.262 I/DEBUG   (   48):     44527d64  41c3a728  /system/
framework/framework.odex
02-01 17:47:26.262 I/DEBUG   (   48):     44527d68  df002777
02-01 17:47:26.262 I/DEBUG   (   48):     44527d6c  e3a070ad
02-01 17:47:26.262 I/DEBUG   (   48): #00 44527d70  ad346999  /system/
lib/libandroid_runtime.so
02-01 17:47:26.262 I/DEBUG   (   48):     44527d74  001aae00  [heap]
02-01 17:47:26.262 I/DEBUG   (   48):     44527d78  00000001
02-01 17:47:26.262 I/DEBUG   (   48):     44527d7c  ad346c1f  /system/
lib/libandroid_runtime.so
02-01 17:47:26.262 I/DEBUG   (   48): #01 44527d80  00000027
02-01 17:47:26.262 I/DEBUG   (   48):     44527d84  ffffffff
02-01 17:47:26.262 I/DEBUG   (   48):     44527d88  44527dc0
02-01 17:47:26.262 I/DEBUG   (   48):     44527d8c  00000004
02-01 17:47:26.262 I/DEBUG   (   48):     44527d90  ad346bed  /system/
lib/libandroid_runtime.so
02-01 17:47:26.262 I/DEBUG   (   48):     44527d94  ad00e438  /system/
lib/libdvm.so
02-01 17:47:28.122 I/ActivityManager(   74): Process
com.badlogic.doodleescape (pid 4033) has died.

The bitmap is loaded successfully otherwise i'd get a
NullPointerException when requesting its height in the first line of
code. It seems that Bitmap.getPixel() fails with a segfault.

I have not the slightest clou of what is happening here. The really
frightening part is that it works on the droid,hero and emulator but
not on g1 hardware. I'd really appreciate any pointers.

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to