1. Phix : win32 programs not working

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

new topic     » topic index » view message » categorize

2. Re: Phix : win32 programs not working

Do you mean win32lib?

One thing I might do is run procmon.

new topic     » goto parent     » topic index » view message » categorize

3. Re: Phix : win32 programs not working

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

new topic     » goto parent     » topic index » view message » categorize

4. Re: Phix : win32 programs not working

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

new topic     » goto parent     » topic index » view message » categorize

5. Re: Phix : win32 programs not working

ChrisB said...

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

new topic     » goto parent     » topic index » view message » categorize

6. Re: Phix : win32 programs not working

Thanks Les

No EUINC.

Working on Procmon

Cheers both

Chris

new topic     » goto parent     » topic index » view message » categorize

7. Re: Phix : win32 programs not working

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

new topic     » goto parent     » topic index » view message » categorize

8. Re: Phix : win32 programs not working

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....

new topic     » goto parent     » topic index » view message » categorize

9. Re: Phix : win32 programs not working

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

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu