title: RenderScript code not working without rsDebug
body: <p>I'm completely new to RenderScript. I was trying to get a simple example shown by Romain Guy in <a href="http://www.youtube.com/watch?v=5jz0kSuR2j4" rel="noreferrer">http://www.youtube.com/watch?v=5jz0kSuR2j4</a> working.</p>
  
  <p>First off, here's the code.</p>
  
  <p>MainActivity.java </p>
  
  <pre><code>    package com.example.rsgray;
  
      import android.app.Activity;
      import android.graphics.Bitmap;
      import android.graphics.BitmapFactory;
      import android.os.Bundle;
      import android.renderscript.Allocation;
      import android.renderscript.RenderScript;
      import android.view.Window;
      import android.view.WindowManager;
      import android.widget.ImageView;
      import android.widget.ImageView.ScaleType;
  
      public class MainActivity extends Activity {
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
  
      getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
      requestWindowFeature(Window.FEATURE_NO_TITLE);
      ImageView iv = new ImageView(this);
      iv.setScaleType(ScaleType.CENTER_CROP);
      setContentView(iv);
  
      drawGrayScale(iv, R.drawable.tulips);
  }
  
  private void drawGrayScale(ImageView iv, int image) {
      Bitmap in = BitmapFactory.decodeResource(getResources(), image);
      Bitmap out = Bitmap.createBitmap(in.getWidth(), in.getHeight(), in.getConfig());
  
      RenderScript rs = RenderScript.create(MainActivity.this);
      Allocation inAlloc = Allocation.createFromBitmap(rs, in);
      Allocation outAlloc = Allocation.createTyped(rs, inAlloc.getType());
  
      ScriptC_gray script = new ScriptC_gray(rs, getResources(), R.raw.gray);
      script.set_in(inAlloc);
      script.set_out(outAlloc);
      script.set_script(script);
  
      script.invoke_filter();
  
      outAlloc.copyTo(out);
      iv.setImageBitmap(out);
  }
  </code></pre>
  
  <p>}</p>
  
  <p>gray.rs</p>
  
  <pre><code>    #pragma version(1)
      #pragma rs java_package_name(com.example.rsgray)
      #pragma rs_fp_relaxed
  
      rs_allocation in;
      rs_allocation out;
      rs_script script;
  
      const static float3 gray = { 0.3f, 0.6f, 0.1f };
  
      void root(const uchar4* v_in, uchar4* v_out, const void* usrData, uint32_t x, uint32_t y) {
          rsDebug("gray.rs", rsUptimeMillis());
          float4 inPixel = rsUnpackColor8888(*v_in);
          float3 result = dot(inPixel.rgb, gray);
          *v_out = rsPackColorTo8888(result);
      }
  
  
      void filter() {
          rsForEach(script, in, out);
      }
  </code></pre>
  
  <p>and finally, AndroidManifest.xml</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.example.rsgray"
  android:versionCode="1"
  android:versionName="1.0" &gt;
  
  &lt;uses-sdk
      android:minSdkVersion="16"
      android:targetSdkVersion="16" /&gt;
  
  &lt;application
      android:allowBackup="true"
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" &gt;
      &lt;activity
          android:name="com.example.rsgray.MainActivity"
          android:label="@string/app_name" &gt;
          &lt;intent-filter&gt;
              &lt;action android:name="android.intent.action.MAIN" /&gt;
  
              &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
          &lt;/intent-filter&gt;
      &lt;/activity&gt;
  &lt;/application&gt;
  
  &lt;/manifest&gt;
  </code></pre>
  
  <p>res/drawable-nodpi contains tulips.jpg. You won't find the rsDebug() statement that I've added in gray.rs in Romain Guy's code.</p>
  
  <p>Anyway, the code compiles, with or without rsDebug(). However, the problem starts when I try to run the app on a device.</p>
  
  <p>I tried to run the app on my Nexus 4 running Android 4.4. With the code as shown, it works fine and I get a greyscale image. However, if I comment out the rsDebug() line, the app does not work. I just get a black screen.</p>
  
  <p>Here is the logcat output.</p>
  
  <ol>
  <li><p>With rsDebug() :</p>
  
  <pre><code>11-26 16:22:41.563: D/dalvikvm(21523): GC_FOR_ALLOC freed 69K, 2% free 9046K/9148K, paused 16ms, total 16ms
  11-26 16:22:41.573: I/dalvikvm-heap(21523): Grow heap (frag case) to 11.862MB for 3145744-byte allocation
  11-26 16:22:41.603: D/dalvikvm(21523): GC_FOR_ALLOC freed &lt;1K, 1% free 12118K/12224K, paused 30ms, total 30ms
  11-26 16:22:41.683: D/dalvikvm(21523): GC_FOR_ALLOC freed &lt;1K, 1% free 12117K/12224K, paused 11ms, total 11ms
  11-26 16:22:41.693: I/dalvikvm-heap(21523): Grow heap (frag case) to 14.862MB for 3145744-byte allocation
  11-26 16:22:41.703: D/dalvikvm(21523): GC_FOR_ALLOC freed 0K, 1% free 15189K/15300K, paused 14ms, total 14ms
  11-26 16:22:41.753: V/RenderScript(21523): 0x74ed5020 Launching thread(s), CPUs 4
  11-26 16:22:41.753: W/Adreno-RS(21523): &lt;rsdVendorAllocationDestroyQCOM:194&gt;: rsdVendorAllocationDestroy: No context!
  11-26 16:22:41.753: E/RenderScript(21523): Successfully loaded runtime: libRSDriver_adreno.so
  11-26 16:22:41.783: D/dalvikvm(21523): GC_FOR_ALLOC freed &lt;1K, 1% free 15201K/15300K, paused 11ms, total 11ms
  11-26 16:22:41.803: D/dalvikvm(21523): GC_FOR_ALLOC freed &lt;1K, 1% free 15202K/15300K, paused 11ms, total 12ms
  11-26 16:22:41.813: W/Adreno-RS(21523): &lt;rsdCompileBitcode:289&gt;: Header check (bitcode_SHA1) failed for /data/data/com.example.rsgray/cache/com.android.renderscript.cache/gray-adreno.meta
  11-26 16:22:41.813: W/Adreno-RS(21523): &lt;rsdDumpCompileLog:499&gt;: Build log for gray: RS code uses long(i64) data type
  11-26 16:22:41.813: W/Adreno-RS(21523): RS bitcode does not contain an invokable compute root
  11-26 16:22:41.813: W/Adreno-RS(21523): &lt;rsdVendorScriptInitQCOM:610&gt;: ERROR: __BuildProgram returned -11
  11-26 16:22:41.813: D/RenderScript(21523): long gray.rs 18142906  0x114d6ba
  11-26 16:22:41.813: D/RenderScript(21523): long gray.rs 18142906  0x114d6ba
  11-26 16:22:41.813: D/RenderScript(21523): long gray.rs 18142906  0x114d6ba
  11-26 16:22:41.813: D/RenderScript(21523): long gray.rs 18142906  0x114d6ba
  .
  . a million more such lines
  .
  11-26 16:22:44.686: D/RenderScript(21523): long gray.rs 18145771  0x114e1eb
  11-26 16:22:44.686: D/RenderScript(21523): long gray.rs 18145771  0x114e1eb
  11-26 16:22:44.686: D/RenderScript(21523): long gray.rs 18145771  0x114e1eb
  11-26 16:22:44.686: D/RenderScript(21523): long gray.rs 18145771  0x114e1eb
  11-26 16:22:44.717: I/Adreno-EGL(21523): &lt;qeglDrvAPI_eglInitialize:320&gt;: EGL 1.4 QUALCOMM build:  (CL3776187)
  11-26 16:22:44.717: I/Adreno-EGL(21523): OpenGL ES Shader Compiler Version: 
  11-26 16:22:44.717: I/Adreno-EGL(21523): Build Date: 10/15/13 Tue
  11-26 16:22:44.717: I/Adreno-EGL(21523): Local Branch: 
  11-26 16:22:44.717: I/Adreno-EGL(21523): Remote Branch: partner/upstream
  11-26 16:22:44.717: I/Adreno-EGL(21523): Local Patches: 
  11-26 16:22:44.717: I/Adreno-EGL(21523): Reconstruct Branch: 
  11-26 16:22:44.747: D/OpenGLRenderer(21523): Enabling debug mode 0
  </code></pre></li>
  <li><p>Without rsDebug() :</p>
  
  <pre><code>11-26 16:23:41.327: D/dalvikvm(21902): GC_FOR_ALLOC freed 56K, 1% free 9046K/9136K, paused 18ms, total 18ms
  11-26 16:23:41.337: I/dalvikvm-heap(21902): Grow heap (frag case) to 11.862MB for 3145744-byte allocation
  11-26 16:23:41.367: D/dalvikvm(21902): GC_FOR_ALLOC freed &lt;1K, 1% free 12118K/12212K, paused 27ms, total 27ms
  11-26 16:23:41.427: D/dalvikvm(21902): GC_FOR_ALLOC freed &lt;1K, 1% free 12117K/12212K, paused 11ms, total 11ms
  11-26 16:23:41.437: I/dalvikvm-heap(21902): Grow heap (frag case) to 14.862MB for 3145744-byte allocation
  11-26 16:23:41.447: D/dalvikvm(21902): GC_FOR_ALLOC freed 0K, 1% free 15189K/15288K, paused 12ms, total 12ms
  11-26 16:23:41.477: V/RenderScript(21902): 0x74ed4f18 Launching thread(s), CPUs 4
  11-26 16:23:41.477: W/Adreno-RS(21902): &lt;rsdVendorAllocationDestroyQCOM:194&gt;: rsdVendorAllocationDestroy: No context!
  11-26 16:23:41.477: E/RenderScript(21902): Successfully loaded runtime: libRSDriver_adreno.so
  11-26 16:23:41.507: D/dalvikvm(21902): GC_FOR_ALLOC freed &lt;1K, 1% free 15201K/15288K, paused 12ms, total 13ms
  11-26 16:23:41.527: D/dalvikvm(21902): GC_FOR_ALLOC freed &lt;1K, 1% free 15202K/15288K, paused 12ms, total 12ms
  11-26 16:23:41.537: D/bcc(21902): Cache /data/data/com.example.rsgray/cache/com.android.renderscript.cache/gray.o.info is dirty due to the source it dependends on has been changed:
  11-26 16:23:43.419: I/Adreno-EGL(21902): &lt;qeglDrvAPI_eglInitialize:320&gt;: EGL 1.4 QUALCOMM build:  (CL3776187)
  11-26 16:23:43.419: I/Adreno-EGL(21902): OpenGL ES Shader Compiler Version: 
  11-26 16:23:43.419: I/Adreno-EGL(21902): Build Date: 10/15/13 Tue
  11-26 16:23:43.419: I/Adreno-EGL(21902): Local Branch: 
  11-26 16:23:43.419: I/Adreno-EGL(21902): Remote Branch: partner/upstream
  11-26 16:23:43.419: I/Adreno-EGL(21902): Local Patches: 
  11-26 16:23:43.419: I/Adreno-EGL(21902): Reconstruct Branch: 
  11-26 16:23:43.449: D/OpenGLRenderer(21902): Enabling debug mode 0
  </code></pre></li>
  </ol>
  
  <p>I can not understand how a debug statement can affect the way in which the app runs. Any help on why I'm facing this problem would be much appreciated.</p>
  
  <p>So that's the first part of my problem. </p>
  
  <p>The second part : When I try to run the exact same code on the Galaxy Note 10.1 N8013 running Android 4.1.2 and on another piece of hardware with the APQ8064, also running Android 4.1.2, the app does not work.</p>
  
  <p>Here's the logcat output with my hardware :</p>
  
  <pre><code>    01-02 00:00:51.043: E/Trace(1684): error opening trace file: No such file or directory (2)
      01-02 00:00:51.043: D/ActivityThread(1684): setTargetHeapUtilization:0.25
      01-02 00:00:51.043: D/ActivityThread(1684): setTargetHeapIdealFree:8388608
      01-02 00:00:51.053: D/ActivityThread(1684): setTargetHeapConcurrentStart:2097152
      01-02 00:00:51.183: V/RenderScript(1684): rsContextCreate dev=0x7276fdd0
      01-02 00:00:51.183: V/RenderScript(1684): 0x616350e0 Launching thread(s), CPUs 4
      01-02 00:00:51.203: V/ScriptC(1684): Create script for resource = gray
      01-02 00:00:51.203: E/bcc(1684): CPU is krait2
      01-02 00:00:51.274: W/bcc(1684): Unable to open /data/data/com.example.rsgray/cache/com.android.renderscript.cache/gray.o in read mode.  (reason: No such file or directory)
      01-02 00:00:51.404: A/libc(1684): Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 1701 (.example.rsgray)
  </code></pre>
  
  <p>And finally, here's the logcat output with the Samsung tablet :</p>
  
  <pre><code>    01-02 10:34:47.470: D/dalvikvm(19022): GC_FOR_ALLOC freed 48K, 11% free 7046K/7875K, paused 13ms, total 13ms
      01-02 10:34:47.475: I/dalvikvm-heap(19022): Grow heap (frag case) to 10.495MB for 3145744-byte allocation
      01-02 10:34:47.495: D/dalvikvm(19022): GC_CONCURRENT freed &lt;1K, 9% free 10117K/11015K, paused 11ms+1ms, total 18ms
      01-02 10:34:47.585: D/dalvikvm(19022): GC_FOR_ALLOC freed &lt;1K, 9% free 10117K/11015K, paused 10ms, total 10ms
      01-02 10:34:47.590: I/dalvikvm-heap(19022): Grow heap (frag case) to 13.494MB for 3145744-byte allocation
      01-02 10:34:47.610: D/dalvikvm(19022): GC_CONCURRENT freed &lt;1K, 7% free 13189K/14151K, paused 11ms+3ms, total 23ms
      01-02 10:34:47.610: D/dalvikvm(19022): WAIT_FOR_CONCURRENT_GC blocked 12ms
      01-02 10:34:47.610: V/RenderScript(19022): rsContextCreate dev=0x40e3b288
      01-02 10:34:47.615: V/RenderScript(19022): 0x411e3008 Launching thread(s), CPUs 3
      01-02 10:34:47.625: V/ScriptC(19022): Create script for resource = gray
      01-02 10:34:47.625: I/bcc(19022): LIBBCC build time: 2013/01/09 23:19:52
      01-02 10:34:47.625: I/bcc(19022): LIBBCC build revision: Unknown (not git)
      01-02 10:34:47.645: D/StopWatch(19022): StopWatch calcFileSHA1 time (us): 17719 
      01-02 10:34:47.650: D/StopWatch(19022): StopWatch calcFileSHA1 time (us): 3031 
      01-02 10:34:47.650: W/bcc(19022): Unable to open file in read mode.  (reason: No such file or directory)
      01-02 10:34:47.750: A/libc(19022): Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 19053 (.example.rsgray)
  </code></pre>
  
  <p>That's about it. If anyone has any idea how to interpret this, please do let me know.</p>
  
  <p>Thanks!</p>