Je moet zoeken naar het punt waar het extern device aangeroepen wordt ,dat geeft het probleem.
Alle hier boven genoemde aanpassingen hebben betrekking op interne routines die zullen
altijd wel OK gaan en lost het probleem niet op.
Posted 2 November 2022 - 15:47
Er is geen aanroep van een extern device in de code. En os.stat() is indirect de OS call die de fout triggert, er is niks meer hoger, anders dan in de python binary die op zijn beurt de posix functie stat() aanroept.
De code doet een stat() call op een local path, en dat is een stale mountpoint naar een network mount. En die stat() call retourneert de fout.
Issue met bovenstaande code is dat de os.stat() call in een functie zit die niet geschreven is om geen correct antwoord te kunnen retoureren.
Om dat ook op te lossen moet checkIfDevice() worden aangepast naar een tri-state (true/false/invalid) en alle aanroepen worden aangepast naar een expliciete check op de boolean return.
Ook niet echt netjes...
Currently in use: VU+ Duo 4K (2xFBC S2), VU+ Solo 4K (1xFBC S2), uClan Usytm 4K Ultimate (S2+T2), Octagon SF8008 (S2+T2), Zgemma H9.2H (S2+T2)
Due to my bad health, I will not be very active at times and may be slow to respond. I will not read the forum or PM on a regular basis.
Many answers to your question can be found in our new and improved wiki.
Posted 2 November 2022 - 17:16
??? Bovenstaande PR vangt wel degelijk de failure af en voorkomt zo de crash (op dat punt in de code) waar TS last van heeft. Zo werkt python, logica doe je met if elif else en zo, en bij abnormale omstandigheden (zoals een stale mountpoint) wordt een exception geraised die je dan weer kunt afvangen in een except blok.
Posted 2 November 2022 - 18:19
Ik moet zeggen dat ik het ook niet helemaal meer volg...
Elke taal behalve assembler doet op en of andere manier aan encapsulatie.
In een functionele 2G taal als C moet je zelf aan de bak om die encapsulatie te schrijven, om alle mogelijke resultaten van een stat() call af te vangen en te behandelen op basis van een error code. Waarmee je dan zelf de encapsulatie maakt (tenzij je die code gaat herhalen op elke plaats waar je een stat() call doet.
Elke hogere taal heeft die encapsulatie in de taal zelf zitten, of het nu gaat om Python, PHP of C++, allemaal hebben ze exceptions en een try/catch mechanisme voor de afhandeling daar van.
Currently in use: VU+ Duo 4K (2xFBC S2), VU+ Solo 4K (1xFBC S2), uClan Usytm 4K Ultimate (S2+T2), Octagon SF8008 (S2+T2), Zgemma H9.2H (S2+T2)
Due to my bad health, I will not be very active at times and may be slow to respond. I will not read the forum or PM on a regular basis.
Many answers to your question can be found in our new and improved wiki.
Posted 2 November 2022 - 20:53
Edited by luisteraar, 2 November 2022 - 20:57.
0 members, 10 guests, 0 anonymous users