Amiga.org
Amiga News and Community Announcements => Amiga News and Community Announcements => Amiga Software News => Topic started by: unusedunused on November 13, 2007, 05:47:18 PM
-
I get the allow from Chris Hodge to reassemble and release tlsfmem with that rule to rename it and add a remark in the readme.
Currently I notice some enforcer Hits and crashes happen when run wipeout(68k memtracker) and end amigaamp.
When start Yam 2.4p1 too get enforcerHits.
Not 100% sure if that Bug in program or tlfsmem is yet.
Because Chris does not look for fixes he told me in E-Mail, so i wait until December if maybe the situation change.
If not, i begin reassemble it.
That is possible, blitzbasic code is too reassemble.
if you reproducable problems with tlsfmem let me know.the more bad Situations know the easier it is to find the Problem.
Maybe other AOS developers can help here too.
-
Bernd_afa include these enforcer hits with his submission. For brevity for those looking at the comments in threaded format, here they are.
Enforcer Hit! Bad program
Illegal WORD WRITE to: 65adadc6 PC: 10030ef2
Data: badedeec 0000000e 00000018 6db5b5cd f7f7f7f7 00000000 109d6f64
00000022
Addr: 100407c8 f7f7f7f7 10ab2e14 109d6f5c 109ba9e8 109d6f64 10000868
10ab2dd8
Stck: 10030ef2 109ba9e8 109d6f5c 10ab2e14 badedeec 0000000f 00000030
109d6f5c
Stck: 100407c8 0000000f 00000030 00f835c4 10000868 109d6f7c 10ab2e14
715f0041
Stck: 00000004 109b5428 10030a6e 100a8034 10ab2dcc 0000001e 00000400
0000010c
Stck: 10030f0c 10ab2dcc 10961be0 00000000 00000001 0000001e 100a6ce0
0000002e
Stck: 100a6d40 00000001 109b52a0 00000000 10ab2d8c 1109f084 100a6c14
00000012
----> 10030ef2 - "tlsfmem" Hunk 0000 Offset 0000083a
----> 109ba9e8 - "AmigaAMP" Hunk 0004 Offset 00000000
----> 109b5428 - "h0:w-pr/Enforcer/Wipeout/Wipeout" Hunk 0000 Offset
00000520
----> 10030a6e - "tlsfmem" Hunk 0000 Offset 000003b6
----> 10030f0c - "tlsfmem" Hunk 0000 Offset 00000854
----> 109b52a0 - "h0:w-pr/Enforcer/Wipeout/Wipeout" Hunk 0000 Offset
00000398
10030eda : 2669 fffc MOVEA.L (A1, -$0004) == $f7f7f7f3,A3
10030ede : c749 EXG.L A3,A1
10030ee0 : 2011 MOVE.L (A1),D0
10030ee2 : 0240 fffc AND.W #$fffc,D0
10030ee6 : d680 ADD.L D0,D3
10030ee8 : 91a8 001c SUB.L D0,(A0, $001c) == $100407e4
10030eec : 6100 ff56 BSR.W #$ff56
10030ef0 : 6122 BSR.B #$00000022
10030ef2 : * 2389 38fc MOVE.L A1,(A1, D3.L*1, $fffffffc) ==
$65adadc0
10030ef6 : 2003 MOVE.L D3,D0
10030ef8 : 0071 0001 3802 OR.W #$0001,(A1, D3.L*1, $02) == $65adadc6
10030efe : 5483 ADD.L #$00000002,D3
10030f00 : d1a8 001c ADD.L D0,(A0, $001c) == $100407e4
10030f04 : 2283 MOVE.L D3,(A1)
10030f06 : 6100 ff3c BSR.W #$ff3c
10030f0a : 6150 BSR.B #$00000050
10030f0c : 4cdf 0c1c MVMEL.L #$0c1c,(A7)+
Name: "AmigaAMP"
Enforcer Hit! Bad program
Illegal LONG WRITE to: 65788e21 PC: 10ecc7fe
Data: 00000004 deadf00d 10fee6aa 00000078 00000020 00000021 00000000
7fffe2a3
Addr: 657870c5 65788e25 65787065 657870c5 11d4b308 00000000 657870a5
11d4b2b4
Stck: 00000038 7fffffff 00000020 10ece782 10000868 10000868 00000000
65787065
Stck: 00000000 11d4b310 badedeed 00020202 00a6a620 01000000 000ab2fc
00028000
Stck: 00a689b8 20000868 ffff00e0 0008d0d8 00010000 00000008 00000000
00ecd9dc
Stck: ffff0868 0000e178 10000001 10f74fd2 10000868 1103c310 10eed320
10c5d6b0
Stck: 11d4b278 00000048 00000000 00000001 00000000 10eca75c 10eed320
10eca4dc
----> 10ecc7fe - "h0:w-pr/Enforcer/Wipeout/Wipeout" Hunk 0000 Offset
000027a6
----> 10ece782 - "h0:w-pr/Enforcer/Wipeout/Wipeout" Hunk 0000 Offset
0000472a
----> 10f74fd2 - "LIBS:muimaster.library" Hunk 0000 Offset 00005b0a
----> 10eca75c - "h0:w-pr/Enforcer/Wipeout/Wipeout" Hunk 0000 Offset
00000704
----> 10eca4dc - "h0:w-pr/Enforcer/Wipeout/Wipeout" Hunk 0000 Offset
00000484
10ecc7ec : 4e75 RTS.L
10ecc7ee : 4e71 NOP.L
10ecc7f0 : 594f SUBA.W #$00000004,A7
10ecc7f2 : 2f07 MOVE.L D7,-(A7)
10ecc7f4 : 2e00 MOVE.L D0,D7
10ecc7f6 : 2f41 0004 MOVE.L D1,(A7, $0004) == $11d4b2b8
10ecc7fa : 2248 MOVEA.L A0,A1
10ecc7fc : 6006 BT .B #$00000006
10ecc7fe : * 22ef 0004 MOVE.L (A7, $0004) == $11d4b2b8,(A1)+
10ecc802 : 5987 SUB.L #$00000004,D7
10ecc804 : 7004 MOVE.L #$00000004,D0
10ecc806 : be80 CMP.L D0,D7
10ecc808 : 62f4 BHI.B #$fffffff4
10ecc80a : 7000 MOVE.L #$00000000,D0
10ecc80c : be80 CMP.L D0,D7
10ecc80e : 630c BLS.B #$0000000c
10ecc810 : 41ef 0004 LEA.L (A7, $0004) == $11d4b2b8,A0
Name: "YAM"
-
I am glad that development can continue - Thanks Chris! And Bernd_afa!
Now, what is the re-named tlsfmem called and where can we find it for testing?
I thought all of Chris Hodge's web pages went 'Bye...'
-
Great news! TLSFmem rules. (I've also found a few programs that don't want to run with it, and I'll submit bug reports as soon as possible.)
-
I have told in the news, that i only begin on December if Chris do not fix anything.
i only want inform that furtherdevelop is possible and collect for Bug Reports.
so there is currently nothing to test.
-
Tlsfmem is dead, long live Memtlsf!!! :-D
Thanks Chris Hodges for allowing this nice program to continue :-)
-
Qudos to bernd_afa for taking the initiative on this.
Nice work mate! :-D :-D :-D
-(e)
-
TLSFmem Forever!
I haven't detected any bugs yet.
Anxiously awaiting the release of TLSFMungWall :idea:
-
A great program from a great developer!
Thanks Chris, and good luck bernd_afa (we`ll give feedback on your work). :bow:
-
if the mungwall not work, doesnt matter, because mugwall is not usefull for developing today, because it tracks not poolmem.
a tool that do that and more is wipeout.it is opensource and with that tlsfmem that work.
i notice a fast speedup when use wipoeut(memtracker) mung memory.my 256 mb ram take without tlsfmem ca. 1 sec.
with tlsf mem it take not measurable time.
yam2.4p1 and MUI crash when use tlsf mem(see the hits)but when use zune and AFA OS it work.
after long time use i notice with AFA too random hangers with TLSF Mem, on startup but no crash, YAM does not continue to start.
but for speedmeasuring it is usefull
My YAM have 6200 Mails in inbox.
when start without wipeout YAM take 3,5 sec.
here no diffrence with our without tlsf Mem.
But when use wipeout then YAM start without tlsfmem in 6,1 -6,3 sec (handstoppet)
with tlsf mem it start in 4,5-4,8 sec.
-
if the mungwall not work, doesnt matter, because mugwall is not usefull for developing today, because it tracks not poolmem.
Mungwall is faster and can be removed without rebooting the system. Those are useful attributes at times.
i notice a fast speedup when use wipoeut(memtracker) mung memory.my 256 mb ram take without tlsfmem ca. 1 sec.
with tlsf mem it take not measurable time.
That is because mh_First is NULL, and thus Wipeout does not munge memory at startup at all. Quite obvious if you think about it for a second.
No software can fill 256MB memory instantly.
While Wipeout starts faster due to missing memory munging, it runs exactly the same speed as before.
-
f the mungwall not work, doesnt matter, because mugwall is not usefull for developing today, because it tracks not poolmem.
True!
a tool that do that and more is wipeout.it is opensource and with that tlsfmem that work.
I never knew about this! It sounds awesome! Why nobody tells me these things?!?! :-D
-
if the mungwall not work, doesnt matter, because mugwall is not usefull for developing today, because it tracks not poolmem.
With TLSF you should not use memory pools anymore unless you want free tracking. AllocMem()/AllocVec() is more efficient than AllocPooled() because it wastes less memory and is also faster.
-
that sounds taerg, I mean great. lol
-
@Bernd_afa
If i have understood you correctly, you plan to convert highly optimized assembly code to blitzbasic? Hmm.. i'm not sure if this is a good thing but hey, it's better than nothing!
-
>No software can fill 256MB memory instantly.
i have a AMD64 3000+ with DUAL Channel DDR Ram and winuae.
sysspeed show me fast2fastm 828 Megabytes/sec
so in theory can be faster than wipeout and old mem system do ;-)
but you are right, i do a complete coldstart and verify and see wipeout with tlsfmem does not fill.
something i must add on todo list.it is important that the developers tools work 100% with memtlsf.
mungwall is faster sure, because it do not munge allocpooled and freepooled.
memfree on old AOS memallocater is very slow, so many programs use memory pools.
because poolmem was lots faster in praxis i change amiblitz to use mempools and here are find out that mungwall does not track mempool memory.
when i have tlsfmem in year 2000 then i save lots work -;)
but the algo is only found 2005
>If i have understood you correctly, you plan to >convert highly optimized assembly code to >blitzbasic?
i reassemble it to 68k asm code back, with in_go(aminet) and it stay asm.
but of course i use a modern graphical assembler ide where i can click on a jsr label and the editor jump to the label.this is important to navigate in unknwon programs that do many nestet jumps
so i develop memtlsf in amiblitz assembler.
-
it is important that the developers tools work 100% with memtlsf.
Yes!
memfree on old AOS memallocater is very slow,
Very true!
but of course i use a modern graphical assembler ide where i can click on a jsr label and the editor jump to the label.this is important to navigate in unknwon programs that do many nestet jumps
Amiblitz Assembler sounds awesome!
-
>Amiblitz Assembler sounds awesome!
wy.C have too support of inline assembler code.
but in amiblitz it is much more easy to code in asm in basic code.
for example you can do
var = 40
move.l @var(a4),d0
add.l #10,d0
move.l d0,@var(a4)
print var
-
That is awesome! Back when Blitz Basic first came out (1988?) I begged them for that feature! But they would not do it for me. :-( I told them I would pay them $200.00 for that feature so I could just use Blitz Basic as my Assembler. Oh well... 20 years waiting is better than never. :-)
-
to mix very easy assembler and basic code was the first step done in amiblitz in when released 2001
this was necessary, because blitzbasic source was asm and in most part the fast asm speed is not necessary.
amiblitz use for new code basic and the old code stay in asm.
BTW: it is possible to test the amiblitz speed compare to c speed, when you download at www.hd-rec.de
if you do that with the existing CPU expensive effects as reverb, you can see that amiblitz sometimes is little faster sometimes little slower as gcc C.
to reach the speed amiblitz offer to load varibale to registers to avoid unescessary load of vars by bad compiler optimation.
for example
regload var1,var2,var3,var4
.....
calculation
.....
regsave var1,var2,var3,var4 ;//(if some values are changed)
-
:bump:
What happened to this? Did it ever get released?
-
As u know TLSFmem and MuGuardianAngel don't get along with each other.
Some years back I was discussing this with THOR and to make a long story short: MuGuardianAngel needs to be rewritten to "work the way TLSFmem works". Currently MuGuardianAngel relies on deeply intricate inner workings of the plain old ancient AmigaOS memory management system.
It really sux that I have to keep nuking TLSFmem and rebooting my machine every time I want to run MuGuardianAngel.
In a perfect world I could run both MuGuardianAngel and TLSFmem all the time on my dev machine and speed up my bug-catching and bug-destroying.
Thor will not rewrite MuGuardianAngel. So basically we need Bernd or we're all dead.
Help me Berndi-wan Kenobi, ur my only hope. My only hope.