Hallo Lars,
erdmann hat geschrieben: Di 7. Apr 2020, 11:45
Hallo Andreas ich bekomme diese Fehler in epm.log und zwar vielfach
[2020-04-07 9:43:05] DosAllocSeg failed err=0x8 in mymalloc; size=256; called from 0xb0a80ff2
[2020-04-07 9:43:05] DosAllocSeg failed err=0x8 in mymalloc; size=16368; called from 0xb10a0079
Das kommt sicherlich vom fehlenden Shared Memory. Das hab ich selbst nur alle paar Monate mal. Eher crashen die Moster-Apps wie die Mozillen oder OOo oder Java.
Ich hab das mal mit Theseus kontrolliert und war darauf gekommen, dass der Verbrauch an Shared Memory durch EPM um Größenordnungen kleiner ist als der der Monster-Apps. Außerdem wird nach Schließen aller EPM-Fenster auch der gesamte Speicher wieder freigegeben, vorher aber eben nicht, was natürlich ein heftiger Fehler ist. Selbst das Hochladen von ETLE603.DLL ist möglich, bringt aber wegen der Größe und des noch ungefixten Problems des aktuellen Kernels mit DLLs im hohen Speicherbereich auch Nachteile.
Richtig nervig ist dagegen das Problem, das Andy Willis
beschrieben hat. So etwas ähnliches hatte ich früher auch, wie dort berichtet. Man sieht, dass nicht der Frame (EPM.EXE), sondern der Client (ETKE603.DLL) der Schuldige ist.
erdmann hat geschrieben: Di 7. Apr 2020, 11:45
1) hast du die Routine "mymalloc" irgendwo implementiert oder ist die Teil von ETKE603.DLL bzw. EPM.EXE ? Das "DosAllocSeg" benutzt wird, sagt mir, dass offensichtlich einfach der alte 16-bit Code mittels 32-bit Compiler neu übersetzt wurde. Das ist eher schlecht (DosAllocSeg hat viele 16-bit bedingte Einschränkungen die in einem 32-bit System nicht relevant sind. Z.B. kann man mit DosAllocSeg nicht im High Memory Speicher alloziieren).
2) ETKE603.DLL: das Problem war und ist, dass diese DLL leider 234 Code Segmente definiert, offensichtlich wegen seiner 16-bittigen Vergangenheit und weil die Makefiles etc. nicht richtig an 32-bit angepasst wurden. Wie schon bekannt, hinterläßt EPM beim Programmende dann 234 Speicherlücken im Shared Memory Bereich, und das passiert mit jedem Programmstart von EPM immer wieder.
Nein, ich bin nicht schuld, das ist reiner IBM-Code.

Dass das eine Quick-and-Dirty-Portierung von 16- in 32-Bit-Code ist, hattest Du schon
vor einigen Wochen vermutet. Klar ist das der Fall. Das wird auch der Grund sein, weshalb bei der max. Dateigröße bei etwas über 60 MB Schluss ist.
erdmann hat geschrieben: Di 7. Apr 2020, 11:45
Jetzt hab ich gesehen das NEPMD mit seiner eigenen Datei ETKE63.DLL kommt. Hast du die irgendwo erzeugt oder wo kommt die her ?
Das ist nur eine gepatchte Version der Originalversion aus \OS2\APPS\DLL, in der die 16 Farben für das Highlighting geändert sind.
Die Datei wurde mit lxLite entpackt.
erdmann hat geschrieben: Di 7. Apr 2020, 11:45
Mein Plan wäre es, die einzelnen Objektdateien zu extrahieren und dann alle Segmente in einem Codesegment zu kombinieren. Ich weiss nicht ob ich das nur mit der DLL hinbekomme weil ich nicht weiß ob es ein Tool gibt (IDA ?) welches eine DLL in seine Objektdateien zerlegen kann, aber wenn du die Objektdateien einzeln hast wäre das einfach.
Nein, hört sich interessant an, aber ohne Quelldateien...
erdmann hat geschrieben: Di 7. Apr 2020, 11:45
3) Der EPM Programmierdokumentation kann man entnehmen, dass in ETKE603.DLL sowohl die E-MLE Fensterklasse (also quasi das Editorfenster) als auch die EPM Frame Fensterklasse (also quasi der ganze Editor, inklusive Toolbar, Statuszeile etc.) exportiert ist. Die Doku beschreibt auch, wie man damit seinen eigenen Editor bauen kann. Ich frage mich langsam, ob das nicht die einfachere Lösung wäre.
Darauf war schon Christian 2002 gekommen. Die Fenster "drumherum" nerven zwar auch etwas mit ihren Fehlern und Unzulänglichkeiten, aber das Hauptproblem sind die extrem fehlerhaften Funktionen im E-MLE. Die sind in ETKE603.DLL drin, aber Closed Source.
Das lohnt irgendwie nicht. Wenn jemand das machen will, OK. Dann bau ich das natürlich ein, aber das Hauptproblem bleiben dann noch die E-Funktionen. Ohne Quellcode hab ich viele Workarounds eingebaut, die die Fehler für den Nutzer fixen. Schlimm sind z.B. das Wiederherstellen von Positionen, das Suchen und Tags. Das hätte ich gerne auf C-Ebene bearbeitet, auch wenn ich da nicht richtig fit bin. Zum Fixen bleibt da jetzt fast nur noch die Zwischenablage, die den Buffer-Code aus dem E-MLE verwendet und damit auf 64 KB gegrenzt ist.
Da würde es wahrscheinlich mehr lohnen, die Zeit in FTE zu stecken oder vielleicht MED wiederzubeleben. KON ist da auch noch ein guter Kandidat, hat aber leider, ähnlich wie FTE, etwas zu wenig Features zum Programmieren.