1. Phix : win32 programs not working
- Posted by ChrisB (moderator) Nov 21, 2020
- 902 views
Hi Pete (and anyone else)
Just come back from a break after playing with Python for a while, using Phix 0.8.1 4=32 bit, and I find that no win32 programs are working. Other programs using otherdlls work fine (Arwen for instance).
If using pw.exe I have to use Task manager to stop it, if using p.ex, I just get a blank console sitting there blinking at me. I can't even use a puts to produce any output to the console at the beginning of the program.
Any outputs anywhere I can look at?
Cheers
Chris
2. Re: Phix : win32 programs not working
- Posted by petelomax Nov 22, 2020
- 886 views
Do you mean win32lib?
One thing I might do is run procmon.
3. Re: Phix : win32 programs not working
- Posted by ChrisB (moderator) Nov 22, 2020
- 896 views
Hi Pete
At first I thought it was win32lib too, but there is a demo, Window.exw, which uses the windows api directly, program attached
https://openeuphoria.org/pastey/340.wc
This is where it gets interesting.
I have two versions of Phix installed, 0.7.2 and 0.8.1. This program runs with 0.7, but not with 0.8. A win32 program will now no longer work with either 0.7 or 0.8. I have commented out all the references to Eu includes (std\machine.e etc), but it's made no difference. Similarly the winwire programs work with 0.7, but not 0.8.
I've tried using procmon, but way too much information.
I guess what's needed, so I don't bother you every time I hit these block, is a way to debug Phix, to see where these blocks are happening.
Cheers
Chris
4. Re: Phix : win32 programs not working
- Posted by lesterb Nov 22, 2020
- 870 views
Hi Chris,
I'm on Win 10 / 2004. I'm running Phix 32-bit 0.8.0 and the program you pasted works for me unchanged.
I can also run winwire and other direct windows progs without problems.
I did some testing on 0.8.1 before Pete released it and I had no Win32 problems.
Do you have EUINC defined on your machine? (I tripped over this recently - was using the wrong version of an include).
Sorry not much help but another data point.
Les
5. Re: Phix : win32 programs not working
- Posted by petelomax Nov 22, 2020
- 877 views
I've tried using procmon, but way too much information.
You need a fair number of filters, that's true. Here's one I just made (of it working perfectly) https://openeuphoria.org/pastey/341.wc
Admittedly I have spent quite a bit of time over the years keying right-click, exclude [hundreds of background tasks, for one, all the system dlls for two, etc], and have by now built up enough that it focuses on what I need it to a bit more.
EDIT: I think I left a couple of old filters for these two on: C:\Program Files (x86)\Phix\builtins\pCrashN.e C:\Program Files (x86)\Phix\builtins\utfconv.e
6. Re: Phix : win32 programs not working
- Posted by ChrisB (moderator) Nov 23, 2020
- 856 views
Thanks Les
No EUINC.
Working on Procmon
Cheers both
Chris
7. Re: Phix : win32 programs not working
- Posted by ChrisB (moderator) Nov 23, 2020
- 839 views
Ok, now it's just plain odd.
I had the same issue on two computers (stopping on blank cmd prompt, no feedback), and on both computers the issue has disappeared after a reboot. I rarely reboot these computers, so I did so on a hunch. I'm now waitung for a win32 program to stop working.
Scuse me while I go and pull out my thick and lustrous, but slightly greying, hair.
Cheers
Chris
8. Re: Phix : win32 programs not working
- Posted by petelomax Nov 23, 2020
- 831 views
- Last edited Nov 24, 2020
I have made a small change to pmain.e/checkforbuiltins(), line 13166 from
if find({autoinclude,gb_fwd},done) then trace(1) end if
to (with cfb_count outside of checkforbuiltins)
integer cfb_count = 0 ... if find({autoinclude,gb_fwd},done) then ?{"autoinclude",autoinclude,"gb_fwd",gb_fwd,getname(symtab[gb_fwd][S_Name],-2)} cfb_count += 1 if cfb_count>100 then ?9/0 end if trace(1) end if
so it should now spit out lines such as (I temporarily mangled the encode_base64() routine name as a quick test)
{"autoinclude","base64.e","gb_fwd",608,"encode_base64"}
and soon crash, if it is getting stuck in a loop because psym.e's idea of what should be in the builtins is not matching what it's loading, presumably because 0.8.1 is loading 0.7.9's includes or something like that.
I cannot think of a sensible or more importantly maintainable way to earmark Phix/builtins, apart from ones that will likely trigger never-ending grief for both me and everyone else.
If I put a version number in every single file, it will make building the next version simply impossible.
If I rename builtins as say builtins.0.8.2 it will cause multiple headaches and at the same time offer no protection for locally-copied files.
What is actually needed is some kind of "do not use after Feb 22nd 2022", right now, predicting exactly when I'll next release a breaking version...
Maybe if I parse ~200 files and store their signatures, I could, erm, nope, lost it....
9. Re: Phix : win32 programs not working
- Posted by ChrisB (moderator) Nov 24, 2020
- 825 views
Hi Pete
You must have a different pmain.e to me, as for me that's on line 12768
Nevertheless, I've added the mods - let's see what happens.
Cheers
Chris