Page 1 of 2 1 2 LastLast
Results 1 to 15 of 16

Thread: Memory probleem bij Dual Core?

  1. #1
    Senior Member Anders's Avatar
    Join Date
    Dec 2001
    Location
    Doetinchem
    Posts
    1,415

    Memory probleem bij Dual Core?

    In het wen32 project dat ik momenteel aan werkt wordt voor de rapportage gedeelte gebruik gemaakt van een soort rapportage wizard geschreven in Delphi 2006 als een dll.
    Het hoofdprogramma ook een Delphi applicatie antwoordt op een aantal CallBack aanroepen van de dll. Onder ander is dat de image rezizing en nog een par zaken.

    Nu heb ik twee personen die een probleem melden bij het maken van een raportage met vrij veel plaatjes. Bij beiden vriest zowel de rapportage app. als het hoofdprogramma en moet handmatig via de Taskmanager gesloten worden. Het probleem komt niet bij elke project voor bij hun en zelfs niet altijd bij de projecten die problemen geeft.

    Van beide mensen heb ik de project files uit getest op drie verschillende computers en heb niet het probleem kunnen reproduceren.

    Ik ben dan gaan kijken wat het verschil bij deze computers zijn en het enige wat ik tot nu toe heb ondekt is dat beide computers waar het probleem zich voordoet zijn uitgerust met Dual Core processor en mijne machines niet.

    Misschien goed om te weten is dat de rapportage dll is ontwikkeld met Delphi 2006 en het hoofd programma nu compileert met delphi 2007, maar het hoofd programma is ontwikkeld door de laatste 5 - 8 jaar - dus in iedere geval terug tot Delphi 5 en misschien wel nog verder terug.

    Mijn eerste gedachte ging in de richting van een Memory management probleem, die veroorzaakt zou kunnen worden door de Dual Core processor of door de nieuwe memory manager in Delphi 2007 - FastMemoryManager.

    Maar ik moet zeggen mijn ervaring met memory management, threading, dll's, etc. niet erg uitgebreid is. Zo misschien zit ik helemaal naast.

    De oude code in het hoofd programma redelijk complex en zonder enige commentaar. Zo het vergt enige inzicht om de meer dan 100.000 regels code te behappen.

    Dus mijn vraag is waar moet ik beginnen te zoeken? Hoe kan ik best gaan werken? Welke hulp- middelen/programmaÔÇÖs kan mij helpen?

    Ja zeg maar - elk advies is welkom
    Anders

    May your code compile!

  2. #2
    Gebruik je meerdere threads?
    We adore chaos because we like to restore order - M.C. Escher

  3. #3
    Hmmm bij een bevriezende app zou ik denk ik eerder eens gaan kijken naar een mogelijk threading probleem.

    Ik weet dat oude versie van Firebird bijvoorbeeld problemen hadden op HT processoren (in feite dus multi cores) omdat de taak ging staan swappen tussen die cores. Het vast hangen aan een core loste dat probleem op.

    Er zwerft een tooltje op Internet rond, IBAffinity wat je volgens mij ook kunt gebruiken voor andere applicaties. Je zou als test jouw applicatie eens kunnen vast hangen aan een core om te zien of dat het probleem oplost.

  4. #4
    Senior Member Anders's Avatar
    Join Date
    Dec 2001
    Location
    Doetinchem
    Posts
    1,415
    Lord Larry - Ja er wordt gebruik gemaakt van threads, maar niet iets wat met de rapportage gedeelte te maken heeft.

    Benno - Ga ik na kijken.

    Maar can je ungestraft zo oude code die gebouwd is onder de oude Borland memory manager gebruiken onder de FastMM?
    Anders

    May your code compile!

  5. #5
    Maar can je ungestraft zo oude code die gebouwd is onder de oude Borland memory manager gebruiken onder de FastMM?
    Volgens mij wel, alleen zou FastMM sneller moeten zijn.

    FastMM heeft toch een logging die je aan kunt zetten voor bv mem leaks? Geeft die niets aan?

  6. #6
    Ik gok op het gebruik van het globale printer object, dat gaat geheid mis met een multi threading app en op een multi core een stuk sneller.
    Marcel

  7. #7
    Senior Member Anders's Avatar
    Join Date
    Dec 2001
    Location
    Doetinchem
    Posts
    1,415
    Benno - Met ImageCFG.exe (zie http://www.robpol86.com/pages/imagecfg.php) heb geprobeerd de affinity te zetten voor de exe en de dll, zoals indeze newsgroup post beschreven (http://groups.google.com/group/borla...99376872251b0d)

    Maar zonder resultaat
    Anders

    May your code compile!

  8. #8
    Senior Member Anders's Avatar
    Join Date
    Dec 2001
    Location
    Doetinchem
    Posts
    1,415
    Marcel: Ik weet niet waar het fout gaat maar in het hoofd programma wordt een XML bestand weggeschreven en de dll maakt er een Html of Rtf bestand van, dus ik weet niet of het de Printer object te maken heeft?

    Waar en hoe zou ik moeten aan pakkken als dat het probleem is?

    Gezien de reacties hier lijkt het op dat men niet zo zeer denk aan een memory management probleem - maar meer in the threading?
    Anders

    May your code compile!

  9. #9
    Anders heb je de affinity gezet op een machine van de klant? Je kon het probleem op je eigen systemen toch niet reproduceren?

    en ja jouw probleem heeft alle tekenen van een typisch threading probleem.

  10. #10
    Stijn Sanders develyoy's Avatar
    Join Date
    Jun 2008
    Location
    GentBrugge, Belgi?½
    Posts
    999
    Ik heb na lang zoeken ooit eens ergens (ik vind niet meer waar) ontdekt dat Delphi blijkbaar zelf niet goed weet in DLL's of hij IsMultiThread moet aan zetten of niet, dus zet je best zelf in een initialization van een van de units gewoon
    IsMultiThread:=true;
    Dat heeft bij mij toch de vreemde memory-fouten op dual core machines opgelsot...

  11. #11
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,195
    Dual core processors zijn overigens ook doorgaans sneller (single threaded) dan ze vervangen. Het kan dus ook een simpeler soort race zijn.

  12. #12
    Senior Member Anders's Avatar
    Join Date
    Dec 2001
    Location
    Doetinchem
    Posts
    1,415
    develyoy - Moet ik de IsMultiThread:=true; in de dll zetten of ook in de hoofd app.? en zo ja in alle units?
    Anders

    May your code compile!

  13. #13
    Senior Member Anders's Avatar
    Join Date
    Dec 2001
    Location
    Doetinchem
    Posts
    1,415
    Ben vandaag iets verder gekoemen, niet dat ik de exacte oorzaak heb - wel waardoor het veroorzaakt wordt - allen niet het waarom en de oplossing ;-)

    De app werkt als volgt in de hoofd app wordt een XML bestand gemaakt als men een reportage wil maken(knop indrukken) Dan roept de hoofd app. een dll aan die een wizard laat zien waarmee de gebruiker kan bepalen hoe en wat in de reportage.

    De dll gaat dan de reportage maken voor hij daar aan begint maakt hij een form aan en open die met Show, deze form laat alleen een tekst zien van Ik ben bezig...

    De dll maakt voor het maken van de reportage gebruik van fuctionaliteit die in de hoofd app. zit door middel van een callback functies - onder meer om de images te scalen waat vrij lang duurt.

    Als de dll klaar is sluit hij deze form met close en past de tekst aan en enabled een sluit knop en een checkbox en open deze form weer met een ShowModal.

    Als de gebruiker op de knop klikt openhij de reportage via een shellexecute.

    Het vastlopen van de applicatie gebeurt als ik de showmodal gebruikt haal ik die er uit dan gaat het goed.

    Iemand die met deze informatie mij iets verder kan helpen?
    Anders

    May your code compile!

  14. #14
    Als het iets met het geheugen was had je app vroeger of later gecrashed. Apps die bevriezen met 0% cpu hebben een deadlock in hun threads. Apps die bevriezen met 100% cpu hebben een oneindige loop waaron geen windows messages afgehandeld worden.

    Nog steeds iets met threads dus. 1001 dingen kunnen mis gaan met threads. Bugs met threads zijn vaak lastig te vinden. Zonder sourcecode helemaal.
    We adore chaos because we like to restore order - M.C. Escher

  15. #15
    Misschien zit het probleem niet in de threading maar in de Ik ben bezig.. dll form in combinatie met het modal form.
    Lees http://www.mail-archive.com/delphi@n.../msg07795.html

Page 1 of 2 1 2 LastLast

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •