Problem mit *.wer-Datei

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 25 Antworten in diesem Thema. Der letzte Beitrag () ist von DTF.

    Problem mit *.wer-Datei

    Hi und einen schönen Sonntag euch allen :)

    Ich hab ein kleines Problem mit meinem Programm und zwar benutze ich da die bass.dll plus Add-ons, um Webradio abzuspielen. Jetzt hab ich in letzter Zeit das Phänomen beobachtet, dass meine Antivirus-Software das Programm, wenn ich einen Stream abspiele, nach zwei oder drei Stunden, beendet mit folgender Ausgabe:

    Status: Aktion blockiert
    Programmname: <MeinProgramm>.exe
    Aktion beobachtet: Ein verdächtiger Prozess hat versucht, die Attribute einer von Data Protector geschützten Datei zu ändern.
    Ziel: C:\ProgramData\Microsoft\Windows\WER\ReportQueue\AppCrash_<MeinProgrammName><Buchstabensalat>\Report.wer

    Nun die Frage: Kann man da (überhaupt) was machen, ohne natürlich den Prozess vom Virenscan auszuschliessen? Und kann das mit der bass.dll oder dessen Add-ons liegen oder liegt das an meinem Programm selbst, denn immer wenn das Problem auftritt bin ich ein Stream am anhören und das Programm läuft im Huntergrund, ohne dass ich eine Aktion mache...?
    Hab ich noch nie gehabt und ich bin Poweruser der BASS. Eine Suche mit google sagt mir, das es mit Norton zusammenhängt. Wer solch ein Schlangenöl nutzt ist selbst schuld! Brain.exe mit der richtigen geistlichen Einstellung ist das beste AV. Mir reicht der Defender absolut aus, ab und an mal ein Scan mit Malwarebytes. Vllt. kann Ian von Un4seen dir sagen, ob ihm was dazu bekannt ist. Von meinen Usern hab ich noch nie so eine Meldung bekommen.

    Ich kann mir vorstellen, das es eine Abgefangene Exception sowas verursachen könnte.

    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „DTF“ ()

    War eben noch am editieren, ich kann mir vorstellen, das eine abgefangene Exception der Auslöser sein kann. Aufgrund diesem hier:
    stackoverflow.com/questions/78…antivirus-also-struggling

    Das Programm hat zwar in einem solchen Fall zu crashen, aber das Norton da reagiert?

    PS.
    @kafffee
    Wegen Norton, garantieren kann ich das nicht, aber zu 80% bin ich mir sicher. Ich fand nur Sachen mit Norton, bei meiner Suche dazu, deshalb recht wahrscheinlich das es damit zusammenhängt, aber auch weil du wohl ebenfalls Norton verwendest. Du hättest ja sonst gesagt, das du es nicht tust.
    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „DTF“ ()

    Okay also nichts was man jetzt ad hoc ändern könnte. Wie gesagt keine Ahnung an welcher Codestelle das auftritt, ist mir jetzt bloss aufgefallen in letzter Zeit...

    @DTF

    Ne klingt auch logisch, ich benutze in der Tat Norton...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „kafffee“ ()

    Hast du denn das Programm bedient zu der Zeit, importiert, exportiert, irgendwas geupdated, im UI gescrollt, oder lief einfach nur der Stream?
    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „DTF“ ()

    Ne wie gesagt das Programm war schön aufgeräumt im Hintergrund in der Taskleiste. Das Programm holt sich bloß alle paar Sekunden die Metadaten des Radiostreams... Aber der Fehler tritt bis jetzt auch nur auf, wenn ich mir paar Stunden nen Stream anhöre...

    PS @DTF
    Ich kann jetzt nicht die Hand für ins Feuer legen, hab nicht explizit drauf geachtet, aber kann sein, dass das nur auftritt, wenn der Computer im Leerlauf ist (Windows + L gedrückt), aber halt auch nicht immer und auch nicht sofort...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „kafffee“ ()

    Ich schiesse jetzt mal mit verbundenen Augen auf 1KM Distanz auf eine Zielscheibe mit 5cm durchmesser.

    Das auslesen der Tags. Holst du die Tags selbst, oder nutzt du dafür ein MetaCallback von der BASS? Als ich die damals selbst in einem Timer-Event die Tags holte(mit BASS_ChannelGetTags) anstatt das Callback dafür zu nutzen und dann die Tags holen wenn das Callback aufgerufen wird., war der Tag hin und wieder null, evtl. ein Verhalten auf das Norton reagiert, wenn das zu oft passiert. Wenn du selbst die Tags holst, kommentiere das mal aus und lass das dann laufen. Wegen der Sache von StackOverflow wo Norton falsch reagierte, wäre das jedenfalls etwas was ich probieren würde.

    Aber wie gesagt, ein Schuss mit...........
    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „DTF“ ()

    Boah bin ich grad überfragt, ich tippe auf "Ich hole das selbst."

    Ich checke das mal und melde mich wieder...

    Edit @DTF

    Ich mach das auch mit einem Timer, und zwar so:

    VB.NET-Quellcode

    1. Private Sub GetRadioText(sender As Object, e As EventArgs)
    2. Dim tagInfo As New Un4seen.Bass.AddOn.Tags.TAG_INFO(AktuelleMP3Info.Dateiname)
    3. If Un4seen.Bass.AddOn.Tags.BassTags.BASS_TAG_GetFromURL(stream, tagInfo) Then
    4. AktuelleMP3Info.Interpret = tagInfo.artist.ToString
    5. AktuelleMP3Info.Musiktitel = tagInfo.title.ToString
    6. End If
    7. End Sub


    Wie hast du das mit der Callback gelöst, ich hab das nämlich nicht hinbekommen...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „kafffee“ ()

    Moin,

    warum nimmste nicht einfach den leeren(parameterlosen) Konstruktor von TAG_INFO? Aber du musst wirklich noch lernen die Dokus zu nutzen. Die Funktion BASS_ChannelSetSync sagt dir sicher was. Damit können wir die SYNCPROC's zu einem stream hinzufügen. Das kennste du schon schon vom SYNCPROC-Type BASS_SYNC_END.


    ToDO: Schauen welche SYNCPROC-Varianten es gibt und wofür die sind, da hast du auch ein Beispiel in C#/VB
    Link zur Doku(bass.net), kannst aber auch die Doku der nativen BASS nehmen, kommt aufs gleiche hinaus.
    bass.radio42.com/help/html/b30…621-6b9c-2304b4dfe02c.htm

    Ehrlich @kafffee, wenn du nicht anfängst die Dokus zu nutzen, kommst du nicht wirklich vorwärts. Wenn ich irgendeine Funktion nutze, gucke ich grundsätzlich in die Doku. Sonst weis man doch garnicht ob was betimmstes zu beachten ist, weis nicht was welcher Parameter bewirkt, weis nicht was man insgesammt für Optionen hat, so wie du jetzt. Hättest du diese Funktion in der Doku studiert, wüsstest du das man mit BASS_ChannelSetSync nicht nur SYNCPROC's für BASS_SYNC_END nutzen kann.


    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D

    Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „DTF“ ()

    Das ist einfach. Fast wie ein Event, nur das man das nicht abonnieren kann mit AddHandler, was da im Hintergund passiert, also wie die BASS das umsetzt ist nicht wichtig, das würdest du vermutlich wirklich nicht verstehen weil du kein C/C++ kannst. Mit BASS_ChannelSetSync sagste der BASS halt, wenn das Ereigniss eintritt rufe diese Funktion auf damit ich Bescheid weis. Das kann einmal passieren(das die Funktion gecallt wird) wie bei BASS_SYNC_END aber auch mehrmals wie beim BASS_SYNC_META.

    PS. @kafffee
    Auch in der ZIP der nativen BASS sind Beispiele, hab da nochmal reingeschaut. Sind zwar in VB-Classic, aber das solltest du zumindest lesen können. Zumindest halbwegs richtig interpretieren.
    bass24/vb/NetRadio/mNetradio.bas
    Solltest du dir mal anschauen, dann kannste auch zeigen wie gefüllt der Puffer ist.
    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „DTF“ ()

    kafffee schrieb:

    Mit den Docs mach ich Fortschritte würde ich sagen...


    Naja, will ich dir mal glauben. Wenn du immerhin schon öfter als früher die Dokus nutzt, ist das ja schon ein Fortschritt. Ich hoffe das hier hat dich jetzt motiviert mal richtig die Funktionen zu studieren. Immerhin kommt eine Funktion zum Einsatz die du schonmal verwendet hast, hättest du die von Anfang an richtig kennengelernt durch die Doku, wärste sicher selbst auf die Idee gekommen, das das mit einem Timer Unsinn ist, vorallem weil dort direkt ein Beispiel mit den Tags ist.

    Das berühmte Beispiel mit dem Pizza-Lieferanten. Du wartest doch bis er klingelt und schaust nicht alle X Sekunden an der Tür ob der endlich mit der Mafiatorte da ist.

    Mit deinem Tool habe ich nicht mitbekommen, aber wenn du es hauptsächlich durch die Doku geschafft hast, ja dann kannste wirklich stolz drauf sein.

    PS.
    @kafffee Hattest du das denn mit auskommentierten Tag-Zeug mal laufen lassen um zu schauen ob Norton immer noch anspringt?
    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „DTF“ ()

    Ne bin noch nicht zu gekommen wie gesagt das ist bis jetzt immer nur nach mehreren Stunden streamen aufgetreten. Interessant wäre auch, das mal so lange im Debug-Modus laufen zu lassen, vielleicht zeigt er mir dann eine Codestelle an.

    Jetzt probiere ich erstmal das mit der Callback und dann lass ich's bei Gelegenheit mal ne Weile laufen und guck was passiert...
    Ich würds einfach abends im Studio starten(PC Laustärke auf 0) und laufen lassen, dann morgens nachsehen ob was passiert ist. Genauso lasse ich auch Tests stundenlang laufen. Nutzt du denn Unit-Tests? Falls du das noch nie gemacht hast, arbeite dich da mal ein. Bugs von Hand suchen muss man auch, aber durch ausgiebiges automatisiertes testen kann man auch welche finden, die es dann erst garnicht in den Release schaffen. Besonders wenn man einen Release-Kandidaten hat, sollte man den nochmals gründlich testen.
    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „DTF“ ()

    Lohnt sich, klar ein wenig mehr arbeit, aber das ist mir lieber als Bugs die man so hätte finden können, von Hand suchen zu müssen. Das hier ist jedenfalls ein Problem, das nicht so einfach zu debuggen ist, weil halt sehr selten und nach recht langer Zeit das Problem eintritt. Falls überhaupt ein Bug der Grund hier ist.
    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D
    Habs hinbekommen mit den Metadaten, nur mit den Docs, also ohne irgendwo Beispielcode gegooglet zu haben:

    VB.NET-Quellcode

    1. Private stream As Integer
    2. Private MySyncProc As New SYNCPROC(AddressOf GetMetaData)
    3. Sub Main()
    4. Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_DEFAULT, Nothing)
    5. stream = Bass.BASS_StreamCreateURL("http://<STREAMADRESSE>/", 0, BASSFlag.BASS_STREAM_AUTOFREE, Nothing, IntPtr.Zero)
    6. Bass.BASS_ChannelSetSync(stream, BASSSync.BASS_SYNC_META, Nothing, MySyncProc, IntPtr.Zero)
    7. Bass.BASS_ChannelPlay(stream, False)
    8. Threading.Thread.Sleep(300000)
    9. End Sub
    10. Private Sub GetMetaData(ByVal handle As Integer, ByVal channel As Integer, ByVal data As Integer, ByVal user As IntPtr)
    11. Console.WriteLine("Sub called.")
    12. Dim tagInfo As New Un4seen.Bass.AddOn.Tags.TAG_INFO()
    13. If Un4seen.Bass.AddOn.Tags.BassTags.BASS_TAG_GetFromURL(stream, tagInfo) Then
    14. Console.WriteLine("Interpret: " & tagInfo.artist.ToString)
    15. Console.WriteLine("Musiktitel: " & tagInfo.title.ToString)
    16. End If
    17. End Sub


    Bin gestern eingeratzt, aber hab das Programm jetzt mal im Debug-Modus laufen, mal gucken, was passiert...

    DTF schrieb:

    Das berühmte Beispiel mit dem Pizza-Lieferanten. Du wartest doch bis er klingelt und schaust nicht alle X Sekunden an der Tür ob der endlich mit der Mafiatorte da ist.


    Also bei DHL mach ich das :P

    Aber das nur nebenbei, Spass muss sein :)
    Auf jeden Fall besser als mit Timer. Wird ja immer gecallt
    when metadata is received in.....


    Aber BASS_TAG_GetFromURL ist nicht BASS_ChannelGetTagsMETA, wenn ich in diesen nicht fand was ich anzeigen will, dann hatte ich BASS_ChannelGetTags genutzt und diese Tagtypen damit geholt:
    BASS_TAG_HTTP
    BASS_TAG_ICY

    Wegen dem ....GetFromURL kann ich mir vorstellen das unnötig eine Verbindung aufgebaut wird. Das wäre dann auch ein möglicher Grund für ein AV anzuspringen.
    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D