[Patch] Beseitigung von Speicherlecks im IDE-Menü

Das Original Benutzerinterface Neutrino-SD incl. zapit, sectionsd, yWeb etc...
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

[Patch] Beseitigung von Speicherlecks im IDE-Menü

Beitrag von Gaucho316 »

Mich stören schon seit langer Zeit die Speicherlecks im IDE-Menü im Zusammenhang mit Menuforwardern und Notifiern. Da dbt das wohl vermutlich nicht mehr machen wird, habe ich mich der Sache nun mal angenommen. Probiert mal bitte aus, ob euch der Code nicht um die Ohren fliegt. Ich selbst kann es mangels IDE-Interface nicht testen. Kompilieren tut es aber.

Drive setup: fix memleaks
Link zum Patch entfernt

P.S.: Der Patch baut auf dem COnOffNotifier-Patch auf.
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: Commit-Wünsche für das CVS II

Beitrag von dbt »

Mir liegt schon was dran, dass das geändert wird. Der Patch applied aber so nicht. Ich weis aber jetzt nicht in wie weit der Patch auf den anderen aufsetzt, aber evtl. reicht es aber statt Vektoren zu benutzen, einfach zumindest einige der Notifiers nur auf den Stack zu laden. Ebenso gilt das für einige MenuWidgets. Dann müsste ich aber doch mal angreifen :-?
msrx111
Interessierter
Interessierter
Beiträge: 95
Registriert: Dienstag 14. Juni 2011, 17:50
Image: eigenkompilat neutrino
Image: eigenkompilat neutrino

Re: Commit-Wünsche für das CVS II

Beitrag von msrx111 »

Wenn Ihr mir erklären könnt welche Patches ich wie einspielen muss, könnte ich auch mittesten. Ich habe zwei Philips Boxen mit IDE-Interface hier vor Ort.
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: Commit-Wünsche für das CVS II

Beitrag von Gaucho316 »

dbt hat geschrieben:Dann müsste ich aber doch mal angreifen :-?
Dann mal frisch ans Werk. :wink: Mir erschien die Vector-Sache am einfachsten.
msrx111 hat geschrieben:Wenn Ihr mir erklären könnt welche Patches ich wie einspielen muss, könnte ich auch mittesten. Ich habe zwei Philips Boxen mit IDE-Interface hier vor Ort.
Ganz einfach, zuerst den COnOffNotifier-Patch einspielen und dann den Patch fürs IDE-Menü.
msrx111
Interessierter
Interessierter
Beiträge: 95
Registriert: Dienstag 14. Juni 2011, 17:50
Image: eigenkompilat neutrino
Image: eigenkompilat neutrino

Re: Commit-Wünsche für das CVS II

Beitrag von msrx111 »

Ich hab jetzt mal ein Image gebaut und getestet. Das läuft auch prinzipiell. Aber beim HDD und mmc Setup läuft einiges schief. Wenn ich das IDE aktiviere dann klappt das auch. Beim nächsten boot wurden bis auf die Swap (Partition1 auf SD-Karte) keine weitere Partition eingebunden (vorhanden wären noch die 2. auf der SD und eine mit einer Partition formatierte CF-Karte mit 16GB) Also hab ich mir gedacht formatier mal neu: In das entsprechende Untermenu komme ich auch und es wird auch formatiert. Aber beim verlassen des Menu ereignet sich ein segmentation fault. Das ist sowohl bei der Ide als auch bei mmc/sd Menu so...

Code: Alles auswählen


[pmt] set update filter, sid 0x6dca pid 0x64 version c
[neutrino] no file /var/tuxbox/config/init.end was found
[neutrino] initialized everything
[LCDFONT] FTC_Face_Requester (Fix12/SemiCondensed)
[drive_setup] init drive setup 1.90 
[drive setup] loadDriveSettings: load settings from /var/tuxbox/config/drivesetup.conf
[drive setup] loadFsModulList: can't open directory /var/lib/modules No such file or directory
[drive setup] loadMmcModulList: can't open directory /var/lib/modules No such file or directory
[neutrino] hddtemp  -n -w -q /dev/ide/host0/bus0/target0/lun0/disc > /tmp/hdtemp 2>/dev/null failed with return code = 127
[drive setup] getHddTemp: executing hddtemp  -n -w -q /dev/ide/host0/bus0/target0/lun0/disc > /tmp/hdtemp 2>/dev/null ...failed! hddtemp  not installed
[neutrino] hddtemp  -n -w -q /dev/ide/host0/bus0/target1/lun0/disc > /tmp/hdtemp 2>/dev/null failed with return code = 127
[drive setup] getHddTemp: executing hddtemp  -n -w -q /dev/ide/host0/bus0/target1/lun0/disc > /tmp/hdtemp 2>/dev/null ...failed! hddtemp  not installed
[drive setup] creating Filesystem, please wait...
fs_types for mke2fs.conf resolution: 'ext2', 'largefile'
Calling BLKDISCARD from 0 to 952074240 failed.
[drive setup] creating Filesystem, please wait...
[drive setup] checking Filesystem...
e2fsck 1.41.14 (22-Dec-2010)
/dev/mmc/disc0/part2: clean, 11/1024 files, 344/232440 blocks
Segmentation fault
Neutrino exited with nonzero exit status, restarting...
Hier Infos zur Hardware die auch den Grund liefern, warum ich neu formatieren wollte bzw habe. Die platten werden beim Start nicht eingehangen. Also irgendwas geht da schief.... Allerdings wird die swap Partition auf meiner SD Karte gefunden...

Code: Alles auswählen

/var/etc/init.d/06hdd generated from neutrino ide/mmc/hdd drive-setup
13.06.2012 - 19:56:45
1.90  do not edit!
Uniform Multi-Platform E-IDE driver Revision: 7.00beta4-2.4

ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx

dboxide: $Id: main.c,v 1.16 2011/06/19 11:49:28 rhabarber1848 Exp $

ide: late registration of driver.

dboxide: activating cs2

dboxide: address space of IDE-Interface is at: 0xc3b8c000

dboxide: IDE-Interface detected, Vendor: DboxBaer or kpt.ahab/Stingray

dboxide: sreset succeeded

Probing IDE interface ide0...

hda: SMI MODEL, ATA DISK drive

ide0 at 0x010-0x017,0x04e on irq 47

hda: attached ide-disk driver.

hda: 31719424 sectors (16240 MB) w/1KiB Cache, CHS=33565/15/63

Partition check:

 /dev/ide/host0/bus0/target0/lun0: [PTBL] [1974/255/63] p1

mmc2 Driver $Id: mmc2.c,v 1.7 2011/06/19 11:49:29 rhabarber1848 Exp $

mmc2: Hardware init

mmc: Card init

mmc: Card init *OK1*

mmc: Card init *OK2*

mmc: Media found Size = 995328, hardsectsize = 512, sectors = 1990656

 mmca: p1 p2


/dev/ide/host0/bus0/target0/lun0/disc:
 setting 32-bit IO_support flag to 1
 setting drive write-caching to 0 (off)
 setting standby to 60
 (5 minutes 0 seconds)
 IO_support\0x09=  1 (32-bit)
starting /var/etc/init.d/S07mounts ...
/var/etc/init.d/07mounts generated from neutrino ide/mmc/hdd drive-setup
13.06.2012 - 19:56:45
1.90  do not edit!
mount: using /var/etc/fstab
mount: mounting /dev/ide/host0/bus0/target0/lun0/part1 on /mnt/hdd1 failed: No such device
mount: mounting /dev/mmc/disc0/part2 on /mnt/mmc failed: No such device
swapon: using /var/etc/fstab
Adding Swap: 65552k swap-space (priority -1)

Ich hoffe, dass meine Test euch weiterhilft.

Edit: weil ich das gerade lese: Die Module liegen natürlich in /lib/modules und nicht in /var/lib/modules wie es im ersten log-Ausschnitt steht. Warum das da so läuft, habe ich keine Ahnung.

Edit2: Aber ich kann über die IDE/MMC Untermenus die Partitionen erfolgreich einbinden.

Code: Alles auswählen

/var # mount
rootfs on / type rootfs (rw)
/dev/root on / type squashfs (ro)
none on /dev type devfs (rw)
proc on /proc type proc (rw)
tmp on /tmp type tmpfs (rw)
/dev/mtdblock/3 on /var type jffs2 (rw)
/dev/ide/host0/bus0/target0/lun0/part1 on /mnt/hdd1 type ext2 (rw,sync)
/dev/mmc/disc0/part2 on /mnt/mmc type ext2 (rw,sync)

Zuletzt geändert von msrx111 am Mittwoch 13. Juni 2012, 20:42, insgesamt 1-mal geändert.
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: [Patch] Beseitigung von Speicherlecks im IDE-Menü

Beitrag von Gaucho316 »

Ich habe die Postings zu diesem Thema mal abgetrennt.
msrx111 hat geschrieben:Aber beim verlassen des Menu ereignet sich ein segmentation fault. Das ist sowohl bei der Ide als auch bei mmc/sd Menu so...
Mist, da scheint wohl beim Löschen der Elemente aus den Vektoren etwas schief zu laufen. Ich kann aber irgendwie keinen Fehler entdecken. :(
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: [Patch] Beseitigung von Speicherlecks im IDE-Menü

Beitrag von Gaucho316 »

Noch eine Kleinigkeit. In drive_setup.cpp (derzeit v1.90) wird in Zeile 724 ein String namens m_name angelegt und nie wieder benutzt. Ich schätze mal, dass in Zeile 726 eigentlich m_name.c_str() statt mmc_modules.c_str() stehen muss.
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: [Patch] Beseitigung von Speicherlecks im IDE-Menü

Beitrag von GetAway »

In Zeile 822 und 3992 könnte man auch auf .empty() prüfen statt auf .size()
Das wäre in jedem Fall effizienter.

Code: Alles auswählen

 822   if (v_fs_item.size() > 0)			//separator format options
3992 	if (v_export_entries.size() != 0)
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: [Patch] Beseitigung von Speicherlecks im IDE-Menü

Beitrag von dbt »

Danke für die Hinweise. Den besagten Kleinkram hab ich grad geändert. Und wenn ich schon mal dabei bin...
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: [Patch] Beseitigung von Speicherlecks im IDE-Menü

Beitrag von Gaucho316 »

GetAway hat geschrieben:In Zeile 822 und 3992 könnte man auch auf .empty() prüfen statt auf .size()
Das wäre in jedem Fall effizienter.
Diese Änderung habe ich in letzter Zeit auch öfter im Coolstream GIT gesehen. Bringt das eigentlich wirklich irgendetwas?
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: [Patch] Beseitigung von Speicherlecks im IDE-Menü

Beitrag von dbt »

Gaucho316 hat geschrieben:
GetAway hat geschrieben:In Zeile 822 und 3992 könnte man auch auf .empty() prüfen statt auf .size()
Das wäre in jedem Fall effizienter.
Diese Änderung habe ich in letzter Zeit auch öfter im Coolstream GIT gesehen. Bringt das eigentlich wirklich irgendetwas?
Ist zumindest sauberer. Man nutzt halt die Vektorfunktionen aus.

Ich hab gestern mal angefangen allegemein etwas aufzuräumen, damit das auch mal von der Todo-Liste kommt. Ich lass' das dann Stück für Stück als Patch hier reinplätschern. Dann bitte testen und dann auch Stück für Stück ins CVS übergeben.
msrx111
Interessierter
Interessierter
Beiträge: 95
Registriert: Dienstag 14. Juni 2011, 17:50
Image: eigenkompilat neutrino
Image: eigenkompilat neutrino

Re: [Patch] Beseitigung von Speicherlecks im IDE-Menü

Beitrag von msrx111 »

Hast du ja gesehen! Bin dabei....
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: [Patch] Beseitigung von Speicherlecks im IDE-Menü

Beitrag von GetAway »

Gaucho316 hat geschrieben:
GetAway hat geschrieben:In Zeile 822 und 3992 könnte man auch auf .empty() prüfen statt auf .size()
Das wäre in jedem Fall effizienter.
Diese Änderung habe ich in letzter Zeit auch öfter im Coolstream GIT gesehen. Bringt das eigentlich wirklich irgendetwas?
Mein Handbuch sagt folgendes dazu:
Using x.empty() instead of x.size() can be faster. x.size() can take linear time but x.empty() is guaranteed to take constant time.
Im sectionsd gibt es auch noch 4 Stellen. Vielleicht bringt es ja etwas im ms-Bereich.
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: [Patch] Beseitigung von Speicherlecks im IDE-Menü

Beitrag von dbt »

dbt hat geschrieben:...Ich lass' das dann Stück für Stück als Patch hier reinplätschern. Dann bitte testen und dann auch Stück für Stück ins CVS übergeben.
Es kommt da einiges zusammen, hier der erste:
patch1_cleanup_drivesetup_17.06.2012.patch
Was dann danach noch kommt baut dann daruf auf, also sollten man die weiteren Patche eigentlich darauf anwenden können! :wink:
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: [Patch] Beseitigung von Speicherlecks im IDE-Menü

Beitrag von Gaucho316 »

@dbt

Ein Speicherleck kann ich dir noch direkt nennen. Such mal nach dem Objekt namens m5. Du wirst sehen, dass das immer mit new angelegt wird. Wenn device_isActive false ist, wird es aber nicht zum Menü hinzugefügt und somit auch nie gelöscht. Das Anlegen von m5 muss also mit in das if-Statement.
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: [Patch] Beseitigung von Speicherlecks im IDE-Menü

Beitrag von dbt »

Gaucho316 hat geschrieben:...Objekt namens m5. ...
patch2_cleanup_drivesetup_22.06.2012.patch
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: [Patch] Beseitigung von Speicherlecks im IDE-Menü

Beitrag von Gaucho316 »

@dbt

Ein weiteres Speicherleck habe ich noch für dich. Such mal nach new CSambaSetup. Dann findest du einen Menuforwarder, dem new CSambaSetup(...) als Target übergeben wird, das nie wieder gelöscht wird.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: [Patch] Beseitigung von Speicherlecks im IDE-Menü

Beitrag von rhabarber1848 »

GetAway hat geschrieben:Im sectionsd gibt es auch noch 4 Stellen. Vielleicht bringt es ja etwas im ms-Bereich.
size_empty.diff
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: [Patch] Beseitigung von Speicherlecks im IDE-Menü

Beitrag von Gaucho316 »

@dbt

Wenn ich das richtig überblicke, hast du mit den ersten beiden Patches erst einmal die Methode showHddSetupMain() aufgeräumt, richtig? Ich habe das mal in Ruhe durchgeguckt und mit den Sachen verglichen, die ich in meinem Patch in die Lösch-Vektoren schiebe. Das sieht recht gut aus, allerdings hast du vergessen, mmc_notifier im Konstruktor auf NULL zu setzen und im Destruktor zu löschen. Testen kann ich es ja wie gesagt nicht.
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: [Patch] Beseitigung von Speicherlecks im IDE-Menü

Beitrag von dbt »

Gaucho316 hat geschrieben:...Wenn ich das richtig überblicke, hast du mit den ersten beiden Patches erst einmal die Methode showHddSetupMain() aufgeräumt, richtig?
Richtig!
...vergessen, mmc_notifier im Konstruktor auf NULL zu setzen und im Destruktor zu löschen. Testen kann ich es ja wie gesagt nicht.
Sollte damit auch passen.
patch3_cleanup_drivesetup_03.07.2012.patch
Die nächsten Happen sind wohl etwas größer, aber sowie Zeit dafür ist, kommt noch einiges nach.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: [Patch] Beseitigung von Speicherlecks im IDE-Menü

Beitrag von Gaucho316 »

Und schon sind wieder 2 Monate um. Hat das inzwischen mal jemand ausprobiert?
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: [Patch] Beseitigung von Speicherlecks im IDE-Menü

Beitrag von Gaucho316 »

Ich denke, die Patches können eingecheckt werden. Vom Angucken her sehen die gut aus. Testen tut's ja wohl niemand. :(
Mourice

Re: [Patch] Beseitigung von Speicherlecks im IDE-Menü

Beitrag von Mourice »

Hi,

ich würde es ja mal einbauen (testen müssen dann andere) ...

Aber welche Patches und Diffs müssen denn jetzt nacheinander eingespielt werden ?

Vielleicht posted ja mal jemand eine Anleitung "für Doofe" ...

MfG
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: [Patch] Beseitigung von Speicherlecks im IDE-Menü

Beitrag von Gaucho316 »

Spiel einfach nacheinander ein. Wenn das IDE-Menü dann noch genauso funktioniert wie vorher, ist alles gut.
Mourice

Re: [Patch] Beseitigung von Speicherlecks im IDE-Menü

Beitrag von Mourice »

Gaucho316 hat geschrieben:Spiel einfach nacheinander ein. Wenn das IDE-Menü dann noch genauso funktioniert wie vorher, ist alles gut.
Hi,

und was ist mit den Patches vom Anfang dieses Themas ?
COnOffNotifier-Patch
Patch fürs IDE-Menü
size_empty.diff

MfG