Test Rewarded Ads Not Working While Interstitial Ads Function Properly (SafeAtomicHelper & Error Code 3 Issue)

558 views
Skip to first unread message

darklord

unread,
Apr 21, 2025, 4:43:07 AMApr 21
to Google Mobile Ads SDK Developers

Hello there!

I’m currently encountering a similar issue where rewarded ads are not working in my Unity Android build, even though test interstitial ads are functioning properly. I’ve verified that the implementation is correct, and the appropriate Ad Unit IDs have been assigned for both ad types.  

At this point, I’m only using Google’s test Ad Unit IDs to ensure everything is working as intended before switching to live ads, as I want to take all necessary precautions.

Here are the test Ad Unit IDs I’m using:

  • Rewarded Ad (not working): ca-app-pub-3940256099942544/5224354917

  • Interstitial Ad (working): ca-app-pub-3940256099942544/1033173712

I have also tried using the test ads programmatically method provided by Admob for unity, but test rewarded ads are still not working.

RequestConfiguration requestConfiguration = new RequestConfiguration();
requestConfiguration.TestDeviceIds.Add("My Device Id");
MobileAds.SetRequestConfiguration(requestConfiguration);


The first error I am facing while using logcat is:

SafeAtomicHelper is broken!
java.lang.ExceptionInInitializerError
at com.google.android.gms.internal.ads.zzgah.<clinit>(com.google.android.gms:play-services-ads@@24.1.0:2)
at com.google.android.gms.internal.ads.zzgba.zza(com.google.android.gms:play-services-ads@@24.1.0:1)
at com.google.android.gms.internal.ads.zzdsu.zzo(com.google.android.gms:play-services-ads@@24.1.0:48)
at com.google.android.gms.internal.ads.zzdsr.run(com.google.android.gms:play-services-ads@@24.1.0:1)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
at java.lang.Thread.run(Thread.java:1012)
Caused by: java.lang.RuntimeException: java.lang.IllegalAccessException: Class com.google.android.gms.internal.ads.zzgae can not access a member of class com.google.android.gms.internal.ads.zzgah with modifiers "private volatile"
at java.util.concurrent.atomic.AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl.<init>(AtomicReferenceFieldUpdater.java:361)
at java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater(AtomicReferenceFieldUpdater.java:115)
at com.google.android.gms.internal.ads.zzgae.<clinit>(com.google.android.gms:play-services-ads@@24.1.0:2)
at com.google.android.gms.internal.ads.zzgah.<clinit>(com.google.android.gms:play-services-ads@@24.1.0:2) 
at com.google.android.gms.internal.ads.zzgba.zza(com.google.android.gms:play-services-ads@@24.1.0:1) 
at com.google.android.gms.internal.ads.zzdsu.zzo(com.google.android.gms:play-services-ads@@24.1.0:48) 
at com.google.android.gms.internal.ads.zzdsr.run(com.google.android.gms:play-services-ads@@24.1.0:1) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644) 
at java.lang.Thread.run(Thread.java:1012) 
Caused by: java.lang.IllegalAccessException: Class com.google.android.gms.internal.ads.zzgae can not access a member of class com.google.android.gms.internal.ads.zzgah with modifiers "private volatile"
at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:125)
at sun.reflect.misc.ReflectUtil.ensureMemberAccess(ReflectUtil.java:100)
at java.util.concurrent.atomic.AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl.<init>(AtomicReferenceFieldUpdater.java:343)
at java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater(AtomicReferenceFieldUpdater.java:115) 
at com.google.android.gms.internal.ads.zzgae.<clinit>(com.google.android.gms:play-services-ads@@24.1.0:2) 
at com.google.android.gms.internal.ads.zzgah.<clinit>(com.google.android.gms:play-services-ads@@24.1.0:2) 
at com.google.android.gms.internal.ads.zzgba.zza(com.google.android.gms:play-services-ads@@24.1.0:1) 
at com.google.android.gms.internal.ads.zzdsu.zzo(com.google.android.gms:play-services-ads@@24.1.0:48) 
at com.google.android.gms.internal.ads.zzdsr.run(com.google.android.gms:play-services-ads@@24.1.0:1) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644) 
at java.lang.Thread.run(Thread.java:1012) 

The second error is:

Rewarded ad failed to load an ad with error : {
  "Code": 3,
  "Message": "No fill.",
  "Domain": "com.google.android.gms.ads",
  "Cause": "null",
  "Response Info": {
    "Response ID": "null",
    "Mediation Adapter Class Name": "",
    "Adapter Responses": [],
    "Response Extras": {
      "mediation_group_name": "Campaign"
    }
  }
}
UnityEngine.DebugLogHandler:Internal_Log(LogType, LogOption, String, Object)
UnityEngine.WorkRequest:Invoke()
UnityEngine.UnitySynchronizationContext:Exec()

And lastly, you can see that my test interstitial ads are perfectly loading without any issue:

Interstitial ad loaded with response : {
  "Response ID": "lPYFaOnoCKrKmLAP2JjswAg",
  "Mediation Adapter Class Name": "com.google.ads.mediation.admob.AdMobAdapter",
  "Adapter Responses": [
    {
      "Adapter": "com.google.ads.mediation.admob.AdMobAdapter",
      "Latency": 680,
      "Ad Source Name": "Reservation campaign",
      "Ad Source ID": "7068401028668408324",
      "Ad Source Instance Name": "[DO NOT EDIT] Publisher Test Interstitial",
      "Ad Source Instance ID": "4665218928925097",
      "Credentials": {
        "pubid": "ca-app-pub-3940256099942544\/1033173712\/cak=no_cache&cadc=d8&caqid=lPYFaM7pB--NmLAP6uOJ8A4",
        "campaign_type": "1",
        "campaign_id": "1565349800"
      },
      "Ad Error": "null"
    }
  ],
  "Loaded Adapter Response": {
    "Adapter": "com.google.ads.mediation.admob.AdMobAdapter",
    "Latency": 680,
    "Ad Source Name": "Reservation campaign",
    "Ad Source ID": "7068401028668408324",
    "Ad Source Instance Name": "[DO NOT EDIT] Publisher Test Interstit


Any help or insight into why the rewarded ads aren’t showing or initializing properly would be greatly appreciated.


Google Admob SDK Version: 10.0.0

Platform: Unity 6000.0.34f1

Android Version: 14

Thanks!

Mobile Ads SDK Forum Advisor

unread,
Apr 21, 2025, 10:22:29 AMApr 21
to muhammad.must...@gmail.com, google-adm...@googlegroups.com

Hi,

Thank you for contacting the Mobile Ads SDK Support team.

Regarding the SafeAtomicHelper is broken error, The error should mostly only have a small performance impact but shouldn't really affect ads functionality. And I can confirm that when the error is reproduced, adapter initialization and load/show ads all work as intended.

Timeline wise, GMA SDK 24.3.0 will have the fix and ETA for this release to be publicly available in early May.

The Error code 3, no fill error means that the ad request was successful, but no ad was returned due to lack of ad inventory. You may check this AdMob Error Codes & Logs for more information on different kinds of errors.

Could you confirm whether the “no fill” error is reproducible in our Sample project? If yes, Could you kindly provide a screenshot of the error. 
 

Thanks,
 
Google Logo Mobile Ads SDK Team

Feedback
How was our support today?

rating1    rating2    rating3    rating4    rating5
[2025-04-21 14:21:29Z GMT] This message is in relation to case "ref:!00D1U01174p.!500Ht01qUPSE:ref" (ADR-00300528)



darklord

unread,
Apr 22, 2025, 4:52:04 AMApr 22
to Google Mobile Ads SDK Developers

Hi there,

Thank you for your response. I’ve confirmed that:

  • In the AdMob sample project (using the test rewarded‑ad unit ID), test rewarded ads load and display correctly on android build, so I have not been able to reproduce Error 3 (no fill) there.

  • In my own app (using the same test rewarded‑ad unit ID), rewarded‑ad requests consistently return Error 3, while test interstitials continue to load and show without issue.

I can confirm that the implementation of rewarded ad through code is valid. 

I’m particularly cautious about using live ad unit IDs in development, given my previous account suspension for invalid activity. To move forward safely, I have a few questions:

  1. Admob SDK reinstallation
    Would you recommend fully removing and re-adding the Mobile Ads SDK to my project? 

  2. Package‑ or account‑specific blocking
    Could my app’s package name or account status be preventing rewarded ads from filling, even in test mode? How can I verify whether my package or account is inadvertently blocked from serving rewarded ads?

  3. Safe live‑ID testing & test device configuration
    I want to be fully compliant with AdMob’s policy when testing live ad unit IDs. What is the recommended procedure to register my development device as a test device so that live‑ID requests are treated as test traffic? Are there any best practices or logs I should check to confirm that my device is correctly recognized as a test device?

I appreciate any guidance or sample commands you can share for configuring test‑device IDs, or validating my package’s ad‑serving status.

Thank you again for your support.

Screenshot_2025-04-22-12-29-12-347_com.DefaultCompany.googleadsgoogleadsmobileunitymainsamplesHelloWorld.jpg
Screenshot_2025-04-22-12-28-47-323_com.DefaultCompany.googleadsgoogleadsmobileunitymainsamplesHelloWorld.jpg

Mobile Ads SDK Forum Advisor

unread,
Apr 22, 2025, 10:44:07 AMApr 22
to muhammad.must...@gmail.com, google-adm...@googlegroups.com

Hi,

Thank you for getting back to us.

Could you kindly provide the sample project privately for further investigation:

If the file(s) you are looking to share are less than 25mb in total you can attach them to this case on your next reply. If you are having trouble attaching your file to this case or if your file(s) are larger than 25mb, you can share your files via reply to author option or by performing the following steps:

1. Navigate to

https://docs.google.com/forms/d/e/1FAIpQLSfkAiXMeYP-fw1W3Z-tT9uwmATEKO5X6S-th0gR2ezdKaaqfg/viewform?usp=pp_url&entry.400550049=Mobile+Ads+SDK&entry.460850823=500Ht00001qUPSEIA4&entry.80707362=00300528

2. Fill out all fields, and attach your file(s).

3. Please reply to this thread when you have uploaded your file(s). Please do not share this link.


Thanks,
 
Google Logo Mobile Ads SDK Team

Feedback
How was our support today?

rating1    rating2    rating3    rating4    rating5

[2025-04-22 14:43:17Z GMT] This message is in relation to case "ref:!00D1U01174p.!500Ht01qUPSE:ref" (ADR-00300528)



darklord

unread,
Apr 22, 2025, 11:23:33 AMApr 22
to Google Mobile Ads SDK Developers

Hi again,

I wanted to share an update regarding the integration of test ads in my Android build. I followed the steps outlined in the Google AdMob documentation and successfully configured my device to receive test ads using my live ad unit ID.

        RequestConfiguration requestConfiguration = new RequestConfiguration();
        requestConfiguration.TestDeviceIds.Add("MY DEVICE ID HERE");
        MobileAds.SetRequestConfiguration(requestConfiguration);

As mentioned in the article:

“If you want to do more rigorous testing with production-looking ads, you can now configure your device as a test device and use your own ad unit IDs that you've created in the AdMob UI. Test devices can either be added in the AdMob UI or programmatically using the Google Mobile Ads SDK.”

After applying this configuration, rewarded ads are loading without issues, and the logs confirm that my device is recognized as a test device even when using live ad unit IDs.

I have attached screenshots as well regarding the logs on logcat.

Thank you for your continued support and guidance!

Screenshot 2025-04-22 140556.png
Screenshot 2025-04-22 140633.png

Mobile Ads SDK Forum Advisor

unread,
Apr 22, 2025, 4:34:56 PMApr 22
to muhammad.must...@gmail.com, google-adm...@googlegroups.com

Hi,

Thanks for confirmation.

Kindly Reach out to us again if you’ve any other issues related to Mobile Ads SDK.

Thanks,
 
Google Logo Mobile Ads SDK Team

Feedback
How was our support today?

rating1    rating2    rating3    rating4    rating5

[2025-04-22 20:34:12Z GMT] This message is in relation to case "ref:!00D1U01174p.!500Ht01qUPSE:ref" (ADR-00300528)



Reply all
Reply to author
Forward
0 new messages