GithubHelp home page GithubHelp logo

Comments (37)

renebaudisch avatar renebaudisch commented on June 2, 2024 1

OK, I hope we do not get messed up by the issue we have.

As for IAS, it seems they found a solution for their product.
Formerly this url could have been used:
https://www.bild.de/politik/inland/politik-inland/lambrecht-presse-pruegel-fuer-die-verteidigungsministerin-80051108.bild.html?ast_override_div=superbanner:361573157,sky:361571602,mrec:361572357
There are three ads, each of them is combined with a call to this script:
https://pixel.adsafeprotected.com/jload
This script has omid included and is part of their display measurement product we're using.
The jload then is meant to call https://pixel.adsafeprotected.com/mon.
At time of creating this case, this didn't work, the call was missed.
But it's there now, so I assume a fix, I also asked them.

For the smartclip issue, the smartclip video player has been brought to the page as outstream ad by a prebid.js video bid.
I found this on this url, where they use a jw videoplayer instance that brings omid and will do Instream requests.
https://www.sport1.de/news/tennis/grand-slams/2022/07/wimbledon-2022-heute-niemeier-und-maria-heute-live-im-tv-stream-ticker-duell-der-deutschen-uberraschungen
As I'm typing this I experience the same error other way round coming from JW on exactly that page:
image
You may need to scroll a bit to the first adSlot inside the content and the video needs to autoplay.

Also using autoplay you will experience this error almost every page impression on:
https://www.bild.de/video/clip/video/karius-steht-auf-zwillings-mama-so-heisst-zeigt-sich-seine-neue-auf-instagram-80395606,auto=true.bild.html
Here we use BitMovin for content videos and Instream ads bringing omid but there will be no outstream ads, but the "clone" error:
image

from open-measurement-jsclients.

renebaudisch avatar renebaudisch commented on June 2, 2024

We experience the same issue and it is related to Google IMA SDK, as they load an own hostet omweb-v1.js into their own iframe without doing a feature detection. As a result the SDK ist loaded into two windows with different origins and then fails.
IMO Google has to prevent this by adding a feature detection to check if the omid sdk is loaded already, but maybe the IAB can be of assistance...

from open-measurement-jsclients.

nlehrer avatar nlehrer commented on June 2, 2024

There was an issue related to this error message in version 1.3.33 of OM Web (released 29 April). It was fixed in 1.3.34 (released 4 May).

@renebaudisch Could your issue be related to that version, or is it happening regardless of version? Could you post the stack trace of the error? I think it should be possible for omweb-v1.js to be in two different iframes/windows simultaneously as long as the integration is sending messages to the correct window. So I am curious if you have more details on how the IMA iframe and the other window interact and why it causes a problem. Thanks.

from open-measurement-jsclients.

nlehrer avatar nlehrer commented on June 2, 2024

@nitin-viu Is your error causing any noticeable issues, for example missing events sent by verification scripts? I believe if the stack trace includes verification-client-v1.js like yours does this potentially indicates an issue with the verification script registering for events, so I suspect some events could be missing.

from open-measurement-jsclients.

renebaudisch avatar renebaudisch commented on June 2, 2024

Right now i'm using version 1.3.31-iab3322, but I thought I updated just resently, but ok, I'll try and comment.

@nlehrer It happens on calling setServiceWindow from sessionClient, that's normally before the events trigger, isn't it?
In my case, and I have the same error, the omweb-v1.js is loaded a second time into an iFrame where it will receive the postMessages from the main window or something like this. The error never was thrown in my omweb-v1.js loaded on window.top.

The version loaded in my case is:
https://pagead2.googlesyndication.com/omsdk/releases/live/omweb-v1.js

and it looks like it's been loaded via:
https://imasdk.googleapis.com/js/sdkloader/ima3.js

it calls itself:
serviceVersion: '1.3.26-google3'

from open-measurement-jsclients.

nitin-viu avatar nitin-viu commented on June 2, 2024

@nlehrer yes this error is breaking Moat reporting :(
Moat pixels are not getting fired.

Do you have any leads on handling verification script registering for events?

from open-measurement-jsclients.

nlehrer avatar nlehrer commented on June 2, 2024

@renebaudisch Got it, so you are calling setServiceWindow, passing top window as the argument? And that causes an error inside the IMA iframe? Does it cause any issues for your code running in the top frame, or it just breaks the IMA OM SDK integration?

@nitin-viu I am looking into it and will let you know of any leads.

from open-measurement-jsclients.

renebaudisch avatar renebaudisch commented on June 2, 2024

@nlehrer No, but almost.
I have a videojs instance where OMID is implemented that get's loaded and registered to window.top together with omweb.js.
Before the player handles the VAST the player starts the OMID session so we can use it and calls setServiceWindow.
Then we process the VAST, going through the wrapper till an ad loads IMA.
IMA then loads a second instance of omweb into an iframe and this second omweb.js is throwing that error, not mine.

The issue here is that the displayed ads using IMA do not have any metrics and so won't get paid.

from open-measurement-jsclients.

nlehrer avatar nlehrer commented on June 2, 2024

I've been looking into the problem, and it seems like if the stack trace originates from a call from a verification script (e.g. moatvideo.js) via the verification client, the console error is a false alarm, and everything should still work properly. I am still going to try to fix it so it doesn't cause confusion.

@nitin-viu Since your stack trace originates from moatvideo.js, I believe the console error is harmless, and there is something else breaking Moat reporting. Perhaps the Moat team would be able to help with it?

@renebaudisch Thanks for explaining. I don't see why that setup would cause this error, so it might be a coincidence. Could you post the stack trace of the error or check whether it originates from a verification script? If it's from a verification script I believe it is harmless; if it is from IMA itself via the session client, then it could be a real bug.

from open-measurement-jsclients.

renebaudisch avatar renebaudisch commented on June 2, 2024

In terms of harmless, this is where it originates:
image
Since it is thrown as a condition and otherwise would call a method "Wb", otherwise not, but I don't see what "Wb" does, but the error may therefore not be harmless.

As for the IMA I'm not the only one complaining:
https://groups.google.com/g/ima-sdk/c/VHsINvCvJcY

I also had that error initiated by IntegralAdScience:
image

It is hard to reproduce but I do not believe in coincidence but in circumstances.

from open-measurement-jsclients.

renebaudisch avatar renebaudisch commented on June 2, 2024

Here, I have one more on this url:
https://www.bild.de/news/ausland/news-ausland/mallorca-droht-streik-chaos-zum-ferienstart-easyjet-ryanair-und-lauda-air-betrof-80473646.bild.html

Stack:
image

MSG/Origin:
image

from open-measurement-jsclients.

renebaudisch avatar renebaudisch commented on June 2, 2024

I now have info from IAS. On the pages where we included OMID, IAS cannot measure or count because the events they are waiting for from the OM webSDK do not arrive, as if they aren't send.

This is what they send me:

The issue here is that our script when loaded into an environment detects the environment before it does anything else, so, for example it could be iFrame, MRAID, OMID etc... here it detects OMID environment.
Once our script has detected an OMID environment it then expects to see OMID calls, like the OMID Impression event for example , before firing any measurement signals like impression or viewability etc. Because the OMID impression event is never called, our script will never count an impression.

Here's a screenshot of the error coming from their agency offer:
image

As I said there is a decision where the error is thrown and I'm pretty sure instead of throwing the error, the other action would be sending the measurement pixel.

from open-measurement-jsclients.

nlehrer avatar nlehrer commented on June 2, 2024

Thanks for digging into this some more. Yes, it can be harmful because in some cases it indicates that the message (such as addSessionListener) wasn't processed by the session service. But this message was not intended for the session service anyway, it was for the verification service, which will successfully process it regardless. So based on my understanding of the source code in the upstream repo (requires joining the OM SDK working group to see) it is just a harmless console error in that case.

I recently submitted a fix to the upstream repo to stop the error message from appearing when it is harmless (messages not intended for the session service).

The Google-hosted version of OM SDK (https://pagead2.googlesyndication.com/omsdk/releases/live/omweb-v1.js) should have that fix by early next week. This is for IMA, for other OM SDK integrations it will depend if the omweb-v1.js they download is version 1.3.35. Then we can see if the error message goes away but the actual issue persists, which is still my hunch; in other words, I still think they might be unrelated.

Regardless we should look into the issues with verification scripts not receiving events, because it seems like at least IAS and maybe Moat are experiencing this and it seems like a potentially major issue. I will check with the working group on Monday on the best way to manage the communication. It would probably be easier if IAS and/or Moat could directly file an issue with all relevant information; I will update with recommended next steps.

from open-measurement-jsclients.

renebaudisch avatar renebaudisch commented on June 2, 2024

IAS has signaled that they are willing to help but cannot access this repo. How can we proceed with them?

from open-measurement-jsclients.

nlehrer avatar nlehrer commented on June 2, 2024

Can you ask IAS to email [email protected] with their understanding of the bug? Thank you.
As far as the repo, we should be able to get any IAS employee access since IAS itself is already part of the working group.

from open-measurement-jsclients.

nlehrer avatar nlehrer commented on June 2, 2024

By the way, it seems like my fix to suppress the misleading error message will take a little longer to end up in IMA (maybe next week), but I can still take a look at the potential IAS issue with missing events meanwhile.

from open-measurement-jsclients.

renebaudisch avatar renebaudisch commented on June 2, 2024

THX Nathan

from open-measurement-jsclients.

renebaudisch avatar renebaudisch commented on June 2, 2024

Maybe this can also be of assistance. On bild.de we have bitmovin using omid and there we also get this errors. I followed the processing and this postMessage runs into this error:

image

It's part of the verification service

from open-measurement-jsclients.

nlehrer avatar nlehrer commented on June 2, 2024

Thanks René, I see it is a VerificationService message, so I think this example is another one where the error is just a console error and doesn't actually stop the message from going through. I've seen the error message on a lot of websites where OMID is still working properly. I'm still hoping by next week once the latest OMID version is deployed it will make the error message stop showing up confusingly.

If you have a webpage where OMID is actually not working properly (e.g. events are not making it to verification scripts), I would be happy to take a look and try to figure out what other issue is happening, especially if we can set it up so that the issue reproduces consistently. Is that happening on bild.de?

from open-measurement-jsclients.

renebaudisch avatar renebaudisch commented on June 2, 2024

The error occurs a lot of times straight forward. I only posted the first message, the following messages surely would send another value as "omid_message_method". As these messages are coming from google display ads I need to see how I can verify they work as expected. I'll try to consult google also.

from open-measurement-jsclients.

renebaudisch avatar renebaudisch commented on June 2, 2024

In our reports for display ads from Google AdManager we can also see a drop for adx visibility since may 18th. We didn't change something on that day but it's the same date IAS dropped and IAS dropped to the same counts ADX is reporting since that day.

from open-measurement-jsclients.

nlehrer avatar nlehrer commented on June 2, 2024

Thanks for the additional info. I checked the OMID releases and IMA releases and nothing seems to line up with May 18th. So maybe it could be something about the display ads product?

Which product are you using to embed the display ads? Is it Google Publisher Tags? And are the drops in AdX and IAS both for display ads or are there also drops in visibility for video ads? I ask because in my understanding OMID does not support display ads on Web (only video ads). I may be misunderstanding, so if you could point me to where you saw OMID messages coming from Google display ads I might understand better.

Consulting Google as well sounds like a good idea.

from open-measurement-jsclients.

renebaudisch avatar renebaudisch commented on June 2, 2024

There are several sources in our adstack that can result in delivering an ad from google. As main adserver we use xandr, supported by prebid.js and alikes, and also we have an integration of the gpt.js, but it seems to not depend on the way the ad comes on the page.

image

In the end the display ad from google contains this javascript file sending omid messages:
https://pagead2.googlesyndication.com/pagead/js/r20220629/r20110914/elements/html/omrhp.js
image

So either it is meant to be used here, it IS used here...
The same for IAS. They have OMID for display integrated into this resource:
https://pixel.adsafeprotected.com/jload

And I also have a new competitor, today I found this error related to smartclip:

image

This seems to be relatedalso also since it is the same issue reported initially on:
https://github.com/bitmovin/axelspringer-sync/issues/101

from open-measurement-jsclients.

nlehrer avatar nlehrer commented on June 2, 2024

I confirmed that the OM SDK for Web is not supposed to be used for display ads. So it seems like the issue is that omweb-v1.js is detected on the page, which could cause the ad response to include certain OMID scripts (based on some ad request parameters indicating OMID support) and also could cause included measurement scripts to wrongly choose OMID, like in your quote from IAS. So it is probably not an issue with the OM SDK but with some part of the ad stack; however, I am interested in what kind of setup ends up causing this. Is omweb-v1.js directly included on the page or is it via an SDK? Are you able to post a link to a page where this is happening or create a demo of it? I am especially interested in the issue where IAS detects it and chooses OMID measurement but also interested in the Google example.

Is the smartclip issue for a display ad or video ad? If it's for a display ad then maybe it's the same issue of "OM SDK for Web shouldn't be used for display ads". If it's for a video ad then it could be a bug in the OM SDK or something wrong with smartclip's integration. I have seen this error message, and this one is a real error that will break the OM SDK unlike the "source window..." message. I was even going to try to fix the cloning code to address it at one point, but then I realized there was a root cause deeper than that causing the issue. Not sure exactly what the issue is in this case or how to isolate it, but I could take a look if there is a way to reproduce it.

from open-measurement-jsclients.

renebaudisch avatar renebaudisch commented on June 2, 2024

Now using v1.3.36 but still getting this error:
image

happend on:
https://www.autobild.de/artikel/elektro-bikes-motorrad-test-ktm-harley-davidson-zero-energica-govecs-19747845.html

from open-measurement-jsclients.

nlehrer avatar nlehrer commented on June 2, 2024

Thank you for the example. I still think this error could point to a real OM bug, although it's hard to track down the exact issue.

I loaded that page a few times and didn't see the error or the OM console logs in your screenshot. Do you know a good way to trigger the error on that page, or do you know which video on the page it corresponds to?

from open-measurement-jsclients.

renebaudisch avatar renebaudisch commented on June 2, 2024

I know... you need to have the exact constellation... And a display ad coming from dfp as well (I'm still convinced, as I saw it as the error occurred) loading their https://pagead2.googlesyndication.com/omsdk/releases/live/omweb-v1.js.

The error happend after the tenth video...
maybe we can have some beta or dev version or a debug routine where we would catch this error and log the event that triggered it to see how it happens?

Is there a verbosity option or something like that?

from open-measurement-jsclients.

nlehrer avatar nlehrer commented on June 2, 2024

I don't think there is any debug version or verbosity option, but I agree it would be useful to have some sort of way to print a debug report. Let me ask the OM SDK group about that idea.

Meanwhile hopefully we can find a more consistent reproduction of this issue.

I do already have some ideas about what we could do in the OM SDK to prevent this from ever happening (for example if we can't clone the HTMLVideoElement we should just not include it in the message, or maybe we never need to include it in messages).

from open-measurement-jsclients.

renebaudisch avatar renebaudisch commented on June 2, 2024

Could not be cloned also in version "1.3.35-iab3515":
https://www.fitbook.de/health/spargel-urin-geruch?dev=true&bidder=smartx&ip_test=outstreamtest_mi

image

To reproduce, scroll down to see a video and wait till the banner ads will be reloaded. When the reload fetches a GAM ad using omid the ad will send a message and the error will be triggered. One of the message that trigger:

image

from open-measurement-jsclients.

nlehrer avatar nlehrer commented on June 2, 2024

Thanks for the reproduction steps, although I wasn't able to reproduce it today when I tried. I think I didn't get any ads from GAM, and I also don't see any smartclip.net scripts loaded on the page, so maybe something has changed on the page? Sorry if I missed the window of opportunity.

That being said, I have seen a similar issue in IMA before; it indicated a bug in how IMA was using the OMID Web session client. Basically IMA wasn't finishing the previous ad session before starting a new one. I believe specifically the issue was starting a session with "limited" access mode after one with "full" access mode. This is why the issue is related to HTMLVideoElement; in full access mode the video element is sent via direct communication, while in limited it is not sent at all. My guess is there is a similar bug in the smartclip script: https://dco.smartclip.net/?plc=7777779

There are also some improvements we can make to the OM SDK itself to prevent starting a new session while an old one is active; I believe this would make the error more obvious but wouldn't fix it. I am planning to work on that once I finish my current OMID project.

The other angle from which to look at it is that display ads should not be measured by OMID on Web. So that may be an issue in the smartclip script as well or how it interacts with the Google-served ad. I believe I've seen something similar to this before, and it has to do with the fact that verification scripts are detecting the present of omweb-v1.js on the page and trying to measure using OMID when it is not supported. This could be solved by the integrator (e.g. smartclip or IMA) putting omweb-v1 inside an iframe to make sure it will only be used when specifically needed by the integrator rather than auto-detected. There also potentially something we can do in OM SDK to never auto-detect on web.

Overall I can't make a really specific diagnosis until we can figure out a more reliable reproduction, so please continue to let me know how you are able to reproduce it. If we can really demonstrate that it is one or both of the two things I mentioned above then I would be able to prioritize fixing one or both of them more quickly. Thanks.

from open-measurement-jsclients.

renebaudisch avatar renebaudisch commented on June 2, 2024

Gosh, I forgot that we restricted smartclip to germany... could you try by using a vpn? Sorry...

from open-measurement-jsclients.

nlehrer avatar nlehrer commented on June 2, 2024

I used a VPN and now I see the smartclip script. But I am having trouble reliably getting a video to play, and when I did, I didn't see the HTMLVideoElement error. I did see the message from the original report ("The source window of session...") which I believe is because the smartclip script still uses version 1.3.33 of the OM SDK service (omweb-v1.js) baked into their script. I think 1.3.35 is being used for the session client aspects only, and it's probably not advisable to have a different session client version from the service version. However, I don't think any of this is actually causing a problem.

I still think the issue is probably due to a bug in the smartclip script where a new session is started before an old one is finished. I may be able to diagnose it further if I'm able to reproduce it but that part also might be difficult without knowledge of smartclip's integration. Happy to help in any way I can, though, and I'll let you know of any progress on improvements that would make such session-ordering bugs more obvious to the integrator (not very high priority at the moment but possibly in the next month or two).

from open-measurement-jsclients.

nlehrer avatar nlehrer commented on June 2, 2024

I think I finally figured out the cause of the "HTMLVideoElement could not be cloned" issue, which is that mixing a full access mode script and a limited access mode script can cause the video element to be incorrectly sent to the limited access mode script. That will cause this error message if the video element can't be serialized (which is probably pretty often; definitely true in IMA at least). I have a PR out for review in the upstream OM SDK repo, and I'll update here when that is released in a new version of the OM SDK service.

from open-measurement-jsclients.

anderagakura avatar anderagakura commented on June 2, 2024

Hello @nlehrer.

Could you please share the link?

I have a PR out for review in the upstream OM SDK repo, and I'll update here when that is released in a new version of the OM SDK service.

from open-measurement-jsclients.

nlehrer avatar nlehrer commented on June 2, 2024

Hi @anderagakura, the PR was merged and should be released this week. Once it is released, I will recommend that integrators download the new version of the OM SDK for Web service (omweb-v1.js) for use in their projects. I will update again once it is released and provide a link to download.

I could also link to the upstream PR if you are interested in the code, but it would only be accessible if you join the OM Working Group. So I would recommend anyone interested in contributing to the OM SDK to email [email protected] about that.

from open-measurement-jsclients.

anderagakura avatar anderagakura commented on June 2, 2024

@nlehrer any update? Thanks

from open-measurement-jsclients.

nlehrer avatar nlehrer commented on June 2, 2024

The fix is included in the latest OM SDK release (1.4.2). I'll close this issue, but feel free to reopen if you ever see any of the issues mentioned in this thread again.

from open-measurement-jsclients.

Related Issues (17)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.