Assertion i mono med Switchking 3.0.0.13

Supportfrågor för Switch King i Linux-miljö
Forum rules
För att kunna hjälpa dig med supportfrågor behöver vi så mycket information som möjligt.
Innan du skapar en ny tråd, läs gärna:
viewtopic.php?f=10&t=20
joh.johansson
1 star
1 star
Posts: 3
Joined: Mon 16 Jul 2012, 16:53

Assertion i mono med Switchking 3.0.0.13

Post by joh.johansson » Tue 25 Sep 2012, 20:33

Hej,

Jag har uppdaterat till 3.0.0.13 av Linux-versionen av Switchking (och är grymt nöjd med tillägget av SystemMode för övrigt... ) men det har medfört att jag får en krasch med jämna mellanrum i mono. Har en Tellstick Duo och körde tidigare 2.0.2.10 med gott resultat. Allt snurrar på en installation med Debian 5 och med mono 2.10.7.

Jag har lyckats fånga stacktrace från mono när det smäller och det är en assertion i mono i threads.c på rad 391. Det är en assert där man verkar kontrollera ett id från en tråd som skapats mot ett max-värde:

* Assertion at threads.c:391, condition `id < HAZARD_TABLE_MAX_SIZE' not met

Bifogar komplett stacktrace för alla trådar i filen switchking.log.

Jag har monitorerat mono-processen som kör Switchking lite och ser att det skapas en hel del trådar (som i och för sig också försvinner så det känns inte som ett resursläckage) som verkar hänga samman med inkommande events från telldusd. Tittar jag i event-loggen i Switchking-klienten ser jag massa temperaturvärden som kommer titt som tätt (förmodligen en granne med trådlös termometer) och i samband med detta ser jag att tråd-id:n i processen ändras löpande.

Utan att ha gått på djupet i monos tråd-implementation misstänker jag att det finns ett problem med att skapa och döda ett stort antal trådar vilket gör att ovanstående assertion slår till efter ett tag. Är implementationen i Switchking gjord så att en tråd skapas för varje event där eventet processas och sedan dör tråden? Finns liknande problem rapporterat tidigare under Linux? Hittar inget i ert bugnet direkt som jag kan härleda till detta problem.

När jag körde 2.0.2.10 hade jag inkommande event från min Duo avstängt pga en bugg som orsakade en krasch i den versionen av Swtichking. Kan man stänga av inkommande events från Tellstick Duo även i Switchking 3? Hur i så fall? Skulle vilja testa att köra med det avslaget och se om jag kan reproducera felet då.

/Johan
You do not have the required permissions to view the files attached to this post.

Martin
Administrator
Administrator
Posts: 2655
Joined: Tue 09 Nov 2010, 20:25

Re: Assertion i mono med Switchking 3.0.0.13

Post by Martin » Tue 25 Sep 2012, 20:53

Event som kommer från Telldusd fångas upp i egna trådar och läggs därefter i en ThreadPool. Syftet med denna ThreadPool är att Switch King måste returnera "OK" till Telldusd så snart som möjligt.
Man kan begränsa antal möjliga samtidiga trådar i ThreadPool och det kanske skulle lösa problemet.

Det är möjligt att stänga av inkommande händelser i Switch King och därmed kapa antalet samtidiga trådar på det sättet och man kan isf antingen stänga av sensoravlyssning, "raw-avlyssning" eller enhetsavlyssning.
Det gör man isf genom att köra en databasfråga mot Switch Kings SQLite-databas.

Följande stänger av all avlyssning, så du får nog välja vilket du isf vill stäng av:

Code: Select all

UPDATE SystemSettings SET SystemSettingValue = 'False' WHERE SystemSettingName = 'TelldusCallbackRawEnabled';
UPDATE SystemSettings SET SystemSettingValue = 'False' WHERE SystemSettingName = 'TelldusCallbackDeviceEventEnabled';
UPDATE SystemSettings SET SystemSettingValue = 'False' WHERE SystemSettingName = 'TelldusCallbackDeviceChangeEnabled';
UPDATE SystemSettings SET SystemSettingValue = 'False' WHERE SystemSettingName = 'TelldusCallbackSensorEventEnabled';
Du får gärna börja där och se om teorin om antal trådar håller. Isf så kan vi justera ner antalet samtidiga trådar i nästa version för Mono.
Martin | Switch King

joh.johansson
1 star
1 star
Posts: 3
Joined: Mon 16 Jul 2012, 16:53

Re: Assertion i mono med Switchking 3.0.0.13

Post by joh.johansson » Wed 26 Sep 2012, 19:22

Hej,

Tack för informationen. Sensor-event och Raw-event är nu satta till False i SystemSettings och inga event kommer in till Switchking annat än device-eventen. Återkommer om några dagar med resultat.

/Johan

Martin
Administrator
Administrator
Posts: 2655
Joined: Tue 09 Nov 2010, 20:25

Re: Assertion i mono med Switchking 3.0.0.13

Post by Martin » Tue 02 Oct 2012, 07:55

Uppdatering? :roll:
Martin | Switch King

joh.johansson
1 star
1 star
Posts: 3
Joined: Mon 16 Jul 2012, 16:53

Sv: Assertion i mono med Switchking 3.0.0.13

Post by joh.johansson » Tue 02 Oct 2012, 18:03

So far so good. Ingen krasch sedan jag stängde av events (sensor och raw events är avstängda) den 26/9 vilket tyder på attmin teori håller. Frågan är om en begränsning av antalet samtidiga trådar i threadpoolen hjälper? Det jag misstänker är att man behöver återanvända trådarna för att undvika att der skapas nya trådar hela tiden och att mono slår i taket på maxskapade trådar i den interna trådhanteringen. Men det kanske är så att trådpoolen återanvänder trådar om man sätter ett tak? Jag kan dock testa en version med maxtak på poolen för att se om det hjälper om du vill bygga en.

Videonisse
2 stars
2 stars
Posts: 34
Joined: Thu 13 Oct 2011, 22:05

Re: Assertion i mono med Switchking 3.0.0.13

Post by Videonisse » Tue 02 Oct 2012, 18:48

Martin wrote:Följande stänger av all avlyssning, så du får nog välja vilket du isf vill stäng av:

Code: Select all

UPDATE SystemSettings SET SystemSettingValue = 'False' WHERE SystemSettingName = 'TelldusCallbackSensorEventEnabled';
Det här var ett utmärkt tips! Har nu stängt av "TelldusCallbackSensorEventEnabled"

Jag får för mina temp.sensorer in 40 events per sensor varje minut och Telldus har inte kommit underfund med varför än. I SK har jag nyligen ändrat så datakällorna för sensorerna använder raw event (då den infon bara är "normala" 1-2 events per unik sensoruppdatering. Då verkar jag ju nu slippa få SK "hamrad" med all denna onormala data :D

Fråga till Martin; förstår jag rätt att inställningen för "TelldusCallbackSensorEventEnabled" aktiverar funktionen "tdRegisterSensorEvent()"?

Martin
Administrator
Administrator
Posts: 2655
Joined: Tue 09 Nov 2010, 20:25

Re: Sv: Assertion i mono med Switchking 3.0.0.13

Post by Martin » Tue 02 Oct 2012, 19:17

joh.johansson wrote:So far so good. Ingen krasch sedan jag stängde av events (sensor och raw events är avstängda) den 26/9 vilket tyder på attmin teori håller. Frågan är om en begränsning av antalet samtidiga trådar i threadpoolen hjälper? Det jag misstänker är att man behöver återanvända trådarna för att undvika att der skapas nya trådar hela tiden och att mono slår i taket på maxskapade trådar i den interna trådhanteringen. Men det kanske är så att trådpoolen återanvänder trådar om man sätter ett tak? Jag kan dock testa en version med maxtak på poolen för att se om det hjälper om du vill bygga en.
Funktionen med trådpoolen är just att trådarna ska återanvändas eftersom det är kostsamt att skapa nya trådar. I princip borde man kunna sätta trådpoolen till en enda tråd.
Martin | Switch King

Martin
Administrator
Administrator
Posts: 2655
Joined: Tue 09 Nov 2010, 20:25

Re: Assertion i mono med Switchking 3.0.0.13

Post by Martin » Tue 02 Oct 2012, 19:18

Videonisse wrote:Fråga till Martin; förstår jag rätt att inställningen för "TelldusCallbackSensorEventEnabled" aktiverar funktionen "tdRegisterSensorEvent()"?
Japp!
Martin | Switch King

rune
1 star
1 star
Posts: 2
Joined: Thu 28 Nov 2013, 14:13

Re: Assertion i mono med Switchking 3.0.0.13

Post by rune » Thu 28 Nov 2013, 18:44

Har fått samme problem. Kjører serveren på en Ubuntu 12.04.3 LTS.

Noen som har tips til hvordan jeg gjør endringer direkte i databasen for å legge inn dette:
UPDATE SystemSettings SET SystemSettingValue = 'False' WHERE SystemSettingName = 'TelldusCallbackSensorEventEnabled';

Prøver å koble meg opp med sqlite:
sqlite switchKing.server.db3
Unable to open database "switchKing.server.db3": file is encrypted or is not a database

Har googlet en del, og finner lite informasjon om krypterte db3 filer og hvordan koble seg opp til databasen.

Anyone?

Rune

Martin
Administrator
Administrator
Posts: 2655
Joined: Tue 09 Nov 2010, 20:25

Re: Assertion i mono med Switchking 3.0.0.13

Post by Martin » Thu 28 Nov 2013, 19:04

Databasen är inte krypterad. Det kan vara idé att försöka med annan programvara för sqlite.
Martin | Switch King

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest