1. installing Euphoria 4 on old machine (windows 98SE)
- Posted by jsun Feb 19, 2011
- 3285 views
I have a windows 98SE desktop. I can't seem to get the dos executable to work in Euphoria 4(eui.exe). The error message is: Assertion Failed: ((unsigned int)p & 7) ==0, function EMalloc, file be_alloc.c, line 542. ABNORMAL TERMINATION
I tried eui -version at the DOS prompt. Whenever I try to execute any .ex program I get the same message.
Any help is appreciated.
2. Re: installing Euphoria 4 on old machine (windows 98SE)
- Posted by dcole Feb 19, 2011
- 3223 views
I have a windows 98SE desktop. I can't seem to get the dos executable to work in Euphoria 4(eui.exe). The error message is: Assertion Failed: ((unsigned int)p & 7) ==0, function EMalloc, file be_alloc.c, line 542. ABNORMAL TERMINATION
I tried eui -version at the DOS prompt. Whenever I try to execute any .ex program I get the same message.
Any help is appreciated.
Hello jsun,
There seems to be some problems running old dos .ex files with version 4.
I don't believe It has anything to do with Windows98.
As a test, Do your .ex programs work with version 3 ?
Don Cole
3. Re: installing Euphoria 4 on old machine (windows 98SE)
- Posted by Insolor Feb 19, 2011
- 3179 views
I have the same problem on my computer with win98SE installed. When I just tried to run eui it outputs an error message on the console:
Assertion Failed: ((unsigned int))p & 7) == 0, function EMalloc, file be_alloc.c, line 542. ABNORMAL TERMINATION
I did not try to run any program (.ex or .exw), I just tried to run the eui interpreter.
4. Re: installing Euphoria 4 on old machine (windows 98SE)
- Posted by ne1uno Feb 19, 2011
- 3242 views
I have a windows 98SE desktop. I can't seem to get the dos executable to work in Euphoria 4(eui.exe). The error message is: Assertion Failed: ((unsigned int)p & 7) ==0, function EMalloc, file be_alloc.c, line 542. ABNORMAL TERMINATION
I tried eui -version at the DOS prompt. Whenever I try to execute any .ex program I get the same message.
Any help is appreciated.
I'm uploading the version 4.0.0 that I use on win98, eu4qt/downloads Eu400-win9x.zip (should be there in a minute or three) compiled with assert off, align4 and managed memory. the binder is not built, so if you decide to use that instead of euc translator, then you can use eui to build a new version using the same options above to configure, you will probably have to create your own or edit config.wat because configure.bat has some win2k stuff. other parts of the build will need some manual intervention. we haven't have much testing on a win9x system.
there are a few other things that currently won't work well on 9x. direct build appears to be broken, used in eutest and by default in euc. use -makefile option to work around the problem. disk size in the stdlib, probably a few other things.
there should be an alpha or beta version of 4.0.1 shortly, I may be able to post a more complete zip at that time. the official distribution should be built with managed memory and align4 already and now probably with assert off as this is the 2nd report of the problem.
please report any further problems and enter a bug report into the ticket system.
5. Re: installing Euphoria 4 on old machine (windows 98SE)
- Posted by DerekParnell (admin) Feb 19, 2011
- 3186 views
I have a windows 98SE desktop. I can't seem to get the dos executable to work in Euphoria 4(eui.exe). The error message is: Assertion Failed: ((unsigned int)p & 7) ==0, function EMalloc, file be_alloc.c, line 542. ABNORMAL TERMINATION
I tried eui -version at the DOS prompt. Whenever I try to execute any .ex program I get the same message.
Any help is appreciated.
The binaries that were distributed were designed for Windows XP and above. To use earlier Windows systems, you need to build a set of binaries with the EALIGN4 symbol set.
The reason is that Euphoria requires that all addresses be aligned on an 8-bytes boundary. Windows XP and above do this automatically but earlier versions of Windows have addresses aligned on a 4-byte boundary. In order to compensate for this, the Euphoria binaries need to be built with extra code that ensures 8-byte boundaries.
6. Re: installing Euphoria 4 on old machine (windows 98SE)
- Posted by jimcbrown (admin) Feb 19, 2011
- 3190 views
I have a windows 98SE desktop. I can't seem to get the dos executable to work in Euphoria 4(eui.exe). The error message is: Assertion Failed: ((unsigned int)p & 7) ==0, function EMalloc, file be_alloc.c, line 542. ABNORMAL TERMINATION
I tried eui -version at the DOS prompt. Whenever I try to execute any .ex program I get the same message.
Any help is appreciated.
The binaries that were distributed were designed for Windows XP and above.
But any official release version of Windows should be built with EALIGN4 on and Windows 9x support.
7. Re: installing Euphoria 4 on old machine (windows 98SE)
- Posted by DerekParnell (admin) Feb 19, 2011
- 3184 views
But any official release version of Windows should be built with EALIGN4 on and Windows 9x support.
Why?
8. Re: installing Euphoria 4 on old machine (windows 98SE)
- Posted by jimcbrown (admin) Feb 19, 2011
- 3205 views
But any official release version of Windows should be built with EALIGN4 on and Windows 9x support.
Why?
The outcome of the IRC discussion that happened over ticket:329 was that we should keep Windows 9x support in officially.
For reference, I've added the relevant irc logs online. See http://openeuphoria.org/IRC-logs/%23euphoria.2010-11-05to08.log
9. Re: installing Euphoria 4 on old machine (windows 98SE)
- Posted by SDPringle Feb 19, 2011
- 3148 views
If we are supporting Windows 98 officially, the ALIGN4 should be on by default in the Makefiles. The other Windows 9x issue is that in this case .exw and .ex should both be associated with euiw.exe. On Windows 9x, this will produce the correct results for maybe_any_key() and nobody can execute .ex files on the command line on 9x anyway. When I raised this issue I was told it was too much to maintain the differences (but it *really* is easy in the ISS files to do).
The option should be ALIGN8 and when it is off we do not assume that we always get 8-aligned memory.
Shawn Pringle
10. Re: installing Euphoria 4 on old machine (windows 98SE)
- Posted by ne1uno Feb 20, 2011
- 3146 views
But any official release version of Windows should be built with EALIGN4 on and Windows 9x support.
Why?
The outcome of the IRC discussion that happened over ticket:329 was that we should keep Windows 9x support in officially.
For reference, I've added the relevant irc logs online. See http://openeuphoria.org/IRC-logs/%23euphoria.2010-11-05to08.log
assert will have to be turned off or those tripped sections fixed, otherwise there is no point to enabling align4 as the binaries will still fail on win9x.
11. Re: installing Euphoria 4 on old machine (windows 98SE)
- Posted by ne1uno Feb 20, 2011
- 3104 views
a windows source distribution with option to download minGW on install might be a better option.
12. Re: installing Euphoria 4 on old machine (windows 98SE)
- Posted by jimcbrown (admin) Feb 20, 2011
- 3090 views
But any official release version of Windows should be built with EALIGN4 on and Windows 9x support.
Why?
After thinking it over, I've come to the following.
We have one known user of Windows 9x, and that user is also the primary developer for 9x. That user, ne1uno, has stated that it's ok to officially drop 9x support. (I think Shawn is also using 9x but not as his primary system and he has also stated that he'll continue to use 3.1.1 on those systems regardless.)
A big part of the acceptance of continuing 9x support was the lack of data available on how many users would be affected by the lack of it. However, it's taken several months for a defective 4.0.0 release before the first report that 9x support has been broken (accidently) in 4.0.0.
Additionally, we have one major developer who has been fighting tooth and nail to get us to drop Windows 9x support. This person is a major contributor to the Windows support and development of Euphoria, and losing that developer would likely have a significantly negative affect on the support of the Windows platform.
It is absolutely important to keep this developer in the group. While since 4.0.0 was released, no poll was ever carried out (afaict) to see how many 9x users we have, the evidence I've seen so far suggests that keeping our mainline Windows developer is more important than keeping Windows 9x support.
For that primary reason, I've decided to change my position and go along with phasing out 9x.
13. Re: installing Euphoria 4 on old machine (windows 98SE)
- Posted by petelomax Feb 20, 2011
- 3060 views
I've decided to change my position and go along with phasing out 9x.
No problem. However the download page should have a "For Windows 9x see PriorReleases". And that page may need a similar note on RC2 directing people to 3.1.1.
Of course ne1uno or anyone else is free to maintain a how-to or win9x binary if they wish.
14. Re: installing Euphoria 4 on old machine (windows 98SE)
- Posted by Vinoba Feb 20, 2011
- 3058 views
"The Old order changeth, yielding place to new;
And god fulfills himself, in many ways;
Lest one good custom should corrupt the world."
.................Tennyson, in Mort D'Arthur.
And I am still lamenting the passing away of the Assembler version of Euphoria. Monsters with unpronounceable names such as C and CPlusPlus have taken over, turning a two byte change into a procedure that calls another procedure that calls a function, (where the coder probably forgot to insert a return variable) that is to be compiled into an executable in yyy compiler because xxx compiler will not work!
I can almost hear King Arthur squirming in his watery grave.
But any official release version of Windows should be built with EALIGN4 on and Windows 9x support.
Why?
After thinking it over, I've come to the following.
.......
For that primary reason, I've decided to change my position and go along with phasing out 9x.
15. Re: installing Euphoria 4 on old machine (windows 98SE)
- Posted by SDPringle Feb 20, 2011
- 3055 views
We should warn the user the programs will no longer work on Windows 9x on the Web page that this version is not for Windows 9x and we can also setup the installer to refuse to install in the event it encounters a Windows 9x machine.
Shawn Pringle
16. Re: installing Euphoria 4 on old machine (windows 98SE)
- Posted by ne1uno Feb 21, 2011
- 2977 views
But any official release version of Windows should be built with EALIGN4 on and Windows 9x support.
Why?
After thinking it over, I've come to the following.
We have one known user of Windows 9x, and that user is also the primary developer for 9x. That user, ne1uno, has stated that it's ok to officially drop 9x support. (I think Shawn is also using 9x but not as his primary system and he has also stated that he'll continue to use 3.1.1 on those systems regardless.)
that would be an example of an unconnected extrapolation of any statement I may have made. what I believe is that the official distribution should not be dumbed down as it were with align4 and no assert at the expense of the 80% of users with more modern OS and CPU and memory cache etc to take advantage of those features.
posting a source distribution that anyone can compile on any windows should be done in any case. I know Shawn has taken some pains to test the installer and safe/machine back to win95 and in the process ironed out bugs to the benefit of all euphoria users and developers.
remember this is a programming tool! limiting the user base, as Jeremy has suggested, should be done by analyzing the cost. He has been in favor of keeping win9x support even while adamantly advocating for dropping DOS support. I leave it to him to explain why. while I understand that the align4 code has added complexity and maintenance, I have appreciated the development team considering the potential unheard users of windows 98 represented by just a few who still use and test on win9x. the users are for sure out there, as a market for developers of applications if nothing else.
as we learned when it may have been managed memory to be dropped, there are a few advantages which at first were not apparent. returning used memory vrs not does have implications even on a fast system. had a hasty decision been made to drop that 'feature' in the quest for an uncomplicated development model we would probably never realize the speed and memory management differences which could still be exploited further. managed memory is the default now, but it so happened that is the only memory model that works in win9x. more than a few may have wondered why at that time was managed memory the default? just because of win9x?
we have no hard evidence of the cost of align4 in use or in maintenance. for that matter, we often only find out after implementation of a feature how costly it was to implement and how much time it takes indirectly. how many even know how to use the existing euphoria profiling tools? based on bug reports, not many. not that anyone needs to have a reason to eliminate code, that is known to be a good thing in practice. I will guess the win9x current users would dwarf the unixs and mac users combined, although they be more vocal about it.
in any event, I will maintain a local align4 branch if that code should then be dropped. possibly adding bug fixes and features as time and energy permit. it is unlikely to be a high priority for a 4.1 version with out more information/feedback.
I think it was most important that the 4.0 version did work on win9x than that the development team should expend much energy fixing every last bug that appears on win9x only. so thanks for that. it won't be the end of the world if 4.0.1 or 4.1 does not work in win9x.
but, no I am not in favor of dropping the align4 ifdefs in the present code being the main reason win9x still works. obviously, if Derek, Matt, Shawn, Jeremy and now Jim decide the cost is not worth continuing, nobody is going to want to trade win9x support for their good works. few others dare to enter that code or would be affected one way or the other.
I am in no position to maintain even that limited section of the code officially or unofficially unless lack of true understanding is somehow a requirement. I say that having already tried tracking some of those assert errors. luckily understanding euphoria the implementation is not a requirement for using euphoria the language. same as any other programming language.
A big part of the acceptance of continuing 9x support was the lack of data available on how many users would be affected by the lack of it. However, it's taken several months for a defective 4.0.0 release before the first report that 9x support has been broken (accidently) in 4.0.0.
Additionally, we have one major developer who has been fighting tooth and nail to get us to drop Windows 9x support. This person is a major contributor to the Windows support and development of Euphoria, and losing that developer would likely have a significantly negative affect on the support of the Windows platform.
at last count, Matt and Jeremy were slightly in favor of keeping align4 and making the distribution work in win9x. if not for Matt and valgrind, the use of euphoria on win9x would be out of the question for any serious programming beyond the simplest of programs. win9x is much more sensitive to memory corruption and so if it were just bug fixes and features being added it may have taken forever to get a reliable euphoria waiting for bug reports about memory corruption.
I count Shawn in favor based on the amount of installer work he has done and earlier while implementing DEP support in such a way as not to harm win9x use.
I get the impression Derek, in spite of having fixed numerous bugs which kept euphoria 4 working in win9x, (thanks) has already ripped align4 out of his local repo and may even overcome his aversion to mercurial to push the new code should a decision be made tomorrow.
Jim has done amazing work making and keeping the minGW port working. often working only on a virtual win98 or by sheer force of will alone. the minGW compiler has a many times smaller footprint than openwatcom and is the better choice for win9x as it will already build out of the box. and as it turns out, the only way a euphoria64 on win64 is going to happen any time soon.
but the point is well taken on the hidden cost of maintaining align4. I find more often than not, the right thing usually happens with or without a vote. been fun to watch and offer the occasional opinion.
17. Re: installing Euphoria 4 on old machine (windows 98SE)
- Posted by DerekParnell (admin) Feb 21, 2011
- 2956 views
I get the impression Derek ... has already ripped align4 out of his local repo and may even overcome his aversion to mercurial to push the new code should a decision be made tomorrow.
False impression. ALIGN4 is still alive here, just not used. I've chosen to avoid its overheads but I don't really care what other people choose to do with it in their local environment. My concern was making align4 the one used in distributions as most installations would be going into a post-Win98 system. I'd be happy to have a win98 installer created for download and let the end user choose which one to install.
As for Hg ... the jury is still out. I'm in no hurry to push anything back to the aether, mainly because I'm sure I'd be updating the wrong branch and blithely unaware of the damage I'd be doing. I don't grok Hg and thus I fear it greatly
18. Re: installing Euphoria 4 on old machine (windows 98SE)
- Posted by SDPringle Feb 21, 2011
- 2960 views
Let's get something straight first. All OSes we maintain have aligned 4 memory. ALIGN4 is a misnomer. The flag should have been ALIGN8 and when defined the system should assume all memory returned from malloc() is 8-byte aligned.
I am glad to hear that someone wants to maintain the version of be_alloc.c. This where non-ALIGN8 code is. This system difference is hidden away with this function. How often do you need to modify this? When I started an SSE2 branch the code that is needed by Windows 9x was a valuable starting point. I didn't need to change the ALIGN8 code, and I didn't need to change the code that was for non-aligned at all. The functions that were there in 3.1 have not been changed. The cost of maintaining this is 0. There is even code for memory that is not even aligned at all but we never see this. What cost is that to us? The specification stays the same and there is no need to mess it up.
So far I have seen Borland, LCC, DJGPP and thus DOS be removed from EUPHORIA. EUPHORIA's platform base is being hacked away so much, portability is becoming an issue for me in order to use it for real applications, where I might actually get benefit beyond a hobby. I wrote a program to use at the institute and all of the machines are running 95. There are five of them. There are running software you cannot buy anymore. It seems that the inclusion of sockets in EUPHORIA keeps it from working on these machines. Others have had better success. That doesn't mean we should just kill it.
What is the cost of it on systems that run it but don't need it. I ran the only remaining benchmark demo for EUPHORIA and put 100000. I did four trials of on each kind of binary and there was no pattern of one being faster than the other.
/* get 8-byte alignment */ alignment = ((unsigned long)p) & 7; if (alignment == 0) { if (align4 && *(int *)(p-4) == MAGIC_FILLER) // don't free. grab a new one. continue; // magic is there by chance! // (this case is remotely possible on Win95 only) return p; // already 8-aligned, should happen most of the time }
The cost is, a bitwise and operation, and two conditionals on each non-cached memory allocation operation. The managed memory doesn't need to check for alignment. If your machine can run NT or higher it is not something to worry about.
Shawn Pringle
19. Re: installing Euphoria 4 on old machine (windows 98SE)
- Posted by DerekParnell (admin) Feb 21, 2011
- 2910 views
Let's get something straight first. All OSes we maintain have aligned 4 memory. ALIGN4 is a misnomer. The flag should have been ALIGN8 and when defined the system should assume all memory returned from malloc() is 8-byte aligned.
I thought 'ALIGN4' meant that the OS returned malloc'ed RAM on a 4-byte boundary, and thus the term in not a misnomer.
The cost is, a bitwise and operation, and two conditionals on each non-cached memory allocation operation. The managed memory doesn't need to check for alignment. If your machine can run NT or higher it is not something to worry about.
Your quoting of the code involved is a little bit incorrect, IMO. To me the ALIGN4 code (excluding the 'free-ing' and 'realloc-ing' code elsewhere) is effectively ...
nbytes += align4; // allow for possible 4-aligned addresses do { p = malloc(nbytes+8); alignment = ((unsigned long)p) & 7; if (alignment == 0) { // address just happens to be 8-aligned this time. if (align4 && *(int *)(p-4) == MAGIC_FILLER) // don't free. grab a new one. continue; // magic is there by chance! // (this case is remotely possible on Win95 only) return p; // already 8-aligned, should happen most of the time } if (alignment != 4) { RTFatal("malloc block NOT 4-byte aligned!\n"); } if (align4) { *(int *)p = MAGIC_FILLER; assert((((unsigned int)p + 4) & 7) == 0); return p+4; } /* first occurrence of a 4-aligned block */ free(p); align4 = 4; // start handling 4-aligned blocks nbytes += align4; } while (TRUE);
and when ALIGN4 is not defined the code is effectively ...
assert(((unsigned int)p & 7) == 0); return p;
And as for 'managed-mem' not needing to check for alignment, well that's not quite right really either. All 'managed-mem' means is that before doing a malloc() call, first see if we don't already have a block of (aligned-8) memory available to use, but if we don't have one available, we then need to do an alignment check on the malloc() we use.
But in any case, I'm glad to see that the overhead on modern machines is negligible.
20. Re: installing Euphoria 4 on old machine (windows 98SE)
- Posted by dcole Feb 21, 2011
- 2875 views
I don't see that there's any problem runing version 3 in win98SE.
If people want to run win98SE then they should use version 3.
If they want to run version 4 then they should use winXP, 2000, Vista, windows 7.
I think changing version 4 to make it work on win98SE is fruitless and silly.
Don Cole
21. Re: installing Euphoria 4 on old machine (windows 98SE)
- Posted by DerekParnell (admin) Feb 21, 2011
- 2914 views
I think changing version 4 to make it work on win98SE is fruitless and silly.
By the way, there is nothing to actually change in Euphoria, its just that the binaries need to be built with a different option set on.
22. Re: installing Euphoria 4 on old machine (windows 98SE)
- Posted by ne1uno Feb 22, 2011
- 2865 views
... I wrote a program to use at the institute and all of the machines are running 95. There are five of them. There are running software you cannot buy anymore. It seems that the inclusion of sockets in EUPHORIA keeps it from working on these machines. Others have had better success. That doesn't mean we should just kill it.
static linking ws_32 for a win95 build should solve that. vanilla win95 had internet explorer 3. win95osr2 may have had ws_32. I think installing internet explorer 4 or 5 includes the DCOM lib as part of the install which would also solve the problem. I don't think win98SE and later will have a problem. that is on builds before ticket598 fix which also includes a link to cmdlg32 which isn't really needed for win9x anyway because the manifest is ignored.
23. Re: installing Euphoria 4 on old machine (windows 98SE)
- Posted by jsun Feb 25, 2011
- 2514 views
I have a windows 98SE desktop. I can't seem to get the dos executable to work in Euphoria 4(eui.exe). The error message is: Assertion Failed: ((unsigned int)p & 7) ==0, function EMalloc, file be_alloc.c, line 542. ABNORMAL TERMINATION
I tried eui -version at the DOS prompt. Whenever I try to execute any .ex program I get the same message.
Any help is appreciated.
Hello jsun,
There seems to be some problems running old dos .ex files with version 4.
I don't believe It has anything to do with Windows98.
As a test, Do your .ex programs work with version 3 ?
Don Cole
Sorry about the delay in getting back to you. I just reinstalled Euphoria 3.11. the DOS interpreter ex.exe seems to work fine. It ran ed.ex and guru.ex with no apparent problems.
jsun