portur.top

  

Bästa artiklarna:

  
Main / Icke dödlig påstående misslyckades hur man fixar

Icke dödlig påstående misslyckades hur man fixar

När du kör en felsökningsversion av Firefox får du många saker skrivna ut till stderr. En del av det ser ut så här :. Du ser också många varningar som dessa, som jag just såg med dubbletter borttagna när jag precis startade Firefox, laddad www.

Jag undrade om det här förra veckan och hade planerat att fråga någon om det mer detaljerat. Men innan jag gjorde det spenderade jag flera timmar igår på att felsöka kraschen i bug 654573. Det visar sig att problemet är att detta påstående i mozStorageConnection. När det händer arbetade jag så småningom upp problemet när jag märkte det varningsmeddelandet bland de sidor med utdata som Firefox producerar. Men däremot kan JS-motorn använda dödliga påståenden eftersom den har ett högre förhållande mellan utvecklare och kod än resten av Firefox.

Nicholas, det är varningar, inte påståenden. Så i det här fallet var det verkliga problemet bara någon kod som gjorde en felaktig tidig retur. Det hade varit lika illa om det hade gjort :. Se https: Varningen är en bieffekt till förmån för felsökning.

Jag tycker också att det är irriterande att många varningar skrivs ut vid normal start och avstängning. Varningar gäller ovanliga fall och start och avstängning är inte ovanligt. Tinderbox regressionstest kommer att fånga buggar åt båda hållen.

Så kommer fuzz-testning: Kanske är det viktigt för de få utvecklare som gör sin normala webbsurfning med felsökning. Men där har du en avvägning mellan att se till att buggar rapporteras och att skrämma människor från att surfa med felsökningsbyggnader.

Brendan och Waldo har argumenterat för en övergång till dödliga påståenden. Liksom du arbetar de båda främst på JS-motorn, som har dödliga påståenden. Jag undrar om någon innehålls- eller layoututvecklare känner starkt på något sätt. Jag bryr mig bara riktigt när det gäller påståenden som korrelerar med minnessäkerheten.

Problemet, aiui, är dubbelt: Jag har inga problem med en tidig återkomst, eftersom RAII gör det till en bra sak att göra. Den enda tillagda funktionaliteten är varningen, och det upprepar villkoret, så plötsligt är det vettigt att använda makrot. Men bara om varningen verkligen önskas.

Användaren använder det lat som en tidig återkomst när felförhållandet är rimligt och förväntat, även om det är ovanligt.

Användaren använder det som ett påstående. Användaren använder den korrekt för situationer som måste rapporteras till en människa så att de kan vidta några åtgärder, men som förväntas vara tillräckliga för att de fortfarande ska kunna låta saker gå vidare. Vilka är dessa senare situationer? De verkar lite konstiga. När någon arbetar på en okänd del av kodbasen är att titta på stderr ett allmänt accepterat sätt att upptäcka att något hemskt men ändå upptäckbart pågår, och kanske att den stackars nybörjaren gör något benhårigt.

Och om något är användbart för endast en specialiserad publik, märka sedan varningarna så att de bara dyker upp i en separat logg. Är vår loggningsanläggning otillräcklig för det ändamålet? I så fall behöver vi ett alternativ. För påståenden: För ovanliga fall: Från namnet förstår du omedelbart att de gör en tidig återkomst. Jag stöter ibland på JS-påståenden som ofta orsakas av att jag försöker använda Venkman, men det har varit andra skäl.

Under åren har det funnits nog av dem att jag har gjort dem icke-dödliga i mitt träd. Det betyder att du kan köra ett test eller en uppsättning tester och upptäcka ett antal eventuellt relaterade fel, istället för bara en följt av en omedelbar krasch.

Men i layout, till exempel, innebär ett påstående ofta bara att ett element lagts på fel plats. Jag brukade felsöka foder för dogfood. En anledning till att jag slutade var att jag fortsatte att slå fatala JS-påståenden ja, jag lämnade fel, men det blev tråkigt.

Anledningen är helt enkelt prioriteringar. Som roc nämnde är dragningen till dödliga påståenden att de stoppar webbläsaren och gör det omöjligt att hitta eller diagnostisera andra buggar som döljs av det dödliga påståendet. För det mesta är JavaScript-motorn ett bra exempel på hur man använder dödliga påståenden: Under kraschtestning har det förekommit fall där vanliga, ofta förekommande dödliga avbrott har blivit ofixade under betydande perioder.

Detta är till och med fallet i JavaScript-motorns påståendefel: Dessa ofixerade dödliga påståenden har effekten att dölja andra buggar från upptäckt som kan vara mycket allvarligare än det tillstånd som flaggas av det ofixade dödliga påståendet. Om villkoret inte uppfyller dessa kriterier bör det inte vara dödligt. Med andra ord är de automatiskt blockerare. Om det inte är tillräckligt viktigt för att fixas omedelbart, bör det omedelbart omvandlas till ett icke-dödligt påstående.

För närvarande har vi minst två familjer: Vi borde ha ett gemensamt format för dödlig påstående. Det blir alltmer oklart för mig om ett visst meddelande kommer från innehållsprocessen eller plug-container-processen. Situationen blir ännu mer förvirrande när vi fortsätter med e10s.

Förmodligen betyder det att de bör ersättas med något som folk gillar. Jag försöker använda den när jag verkligen vill se varningen i konsolen. Så när du lägger till ett nytt element i enumet har du inget skydd? Han har fel. Runtidskontroller är det näst bästa, och inga kontroller är det värsta.

Det arbetet behöver fortfarande utvidgas till mochitester. Nicholas Nethercote. Hoppa till innehåll. Hem Om. Vad är poängen med icke-dödliga påståenden? Upplagt den 7 juni 2011 av Nicholas Nethercote 27 kommentarer. En del av det ser ut så här: Ignorerar duplikatobservatör: Push aBoundElement misslyckades: Underdokumentbehållare har inget innehåll: Underdokumentbehållare har ingen ram: Så sammanfattningsvis är här mina tankar om påståenden: Icke-dödliga påståenden är nästan värdelösa.

Varningarna går bara vilse bland bullret från alla meddelanden som går till stderr. Icke-dödliga påståenden som återkommer tidigt är värre än värdelösa. Speciellt eftersom beteendet för tidig återkomst inte är uppenbart från deras namn.

Det här inlägget publicerades i Correctness, Firefox. Bokmärk permalänken. Benoit Jacob 7 juni 2011 kl 2: Nicholas Nethercote 7 juni 2011 kl 2: Zack 7 juni 2011 kl 2: Josh Matthews 7 juni 2011 kl 2: Boris 7 juni 2011 kl 2: Det skulle ha varit lika illa om det hade gjort: Zack, Boris, Josh: Jesse Ruderman 7 juni 2011 kl 2: Jesse Ruderman 7 juni 2011 kl 3: Justin Dolske 7 juni 2011 kl 4: Problemet, aiui, är dubbelt: Steve Fink 7 juni , 2011 vid 6: Ok, bra, gör det om!

Nicholas Nethercote 7 juni 2011 kl 8: Neil Rashbrook 7 juni 2011 kl 10: Robert O'Callahan 7 juni 2011 kl 11: Min synvinkel är: Robert Kaiser 8 juni 2011 kl 1:

(с) 2019 portur.top