ErikOnBike / CodeParadise

Framework for developing web applications and Node.js applications using Smalltalk
MIT License
83 stars 9 forks source link

strange characters at the end of "Component-Example" url on pharo 12 #24

Closed git-dmou closed 6 months ago

git-dmou commented 8 months ago

when starting the "Component-Examples" application from code paradise menu, the browser open with an url ending with 2 random characters .... and of course, the loading never end.

when I remove these chars, to get a clean url, the application opens as expected.

I've tried all the applications from the menu and this is the only case of this strange behaviour.

ErikOnBike commented 8 months ago

Hi @git-dmou

I'm really puzzled here. I tried the menu and all items work without a problem. Which Pharo version are you using and which VM version? I tried Pharo 10 and 12.

The code for the Component Examples does not seem special if compared to other applications.

Sunny regards, Erik

ErikOnBike commented 8 months ago

@git-dmou I see you're using Pharo 12 (didn't read the title carefully enough)...

ErikOnBike commented 8 months ago

@git-dmou retried with new image, but still works. Which OS are you on? No clue if this makes a difference, but seeing if I can reproduce this.

git-dmou commented 8 months ago

Hello Erik,

I'm on windows 11, I've tried on 2 differents computers,

VM: 120-x64 2024-01-15 update

image pharo 12 from the same day

tried on chrome and Firefox.

I browsed the code quickly and saw no differences between apps in the building of url as you said !

astares commented 8 months ago

Specific language setting on browser?

git-dmou commented 8 months ago

I've tried english on firefox and french on chrome

ErikOnBike commented 8 months ago

Which characters are appended? You wrote 'random'. Does this mean it differs between executions? Could you try and add a breakpoint in CpDevTools class >> #open and inspect what the value of choices is before making the selection and what the value of choice is after making the selection? This to check whether these random characters are coming from the Pharo image or whether the browser (plugin?) somehow adds these characters. Thx

git-dmou commented 8 months ago

by random I mean a couple of different char at each exec. for example : "À3" or "%10k" or "rš", appended to "http://localhost:8080/static/app.html?Component-Examples"

I'll try with the breakpoint

git-dmou commented 8 months ago
Capture d'écran 2024-01-17 131902

apparently, no problems so far !

ErikOnBike commented 8 months ago

Maybe also add a breakpoint on: WBWindowsWebBrowser class >> #shellExecute:file:parameters:directory:show:. That is sort of the last code being executed before it is handled to the OS (shell32 lib) to execute. See if lpFile is still without these random characters.

git-dmou commented 8 months ago

here you are image

git-dmou commented 8 months ago

you're right, non random chars in the pharo area !

ErikOnBike commented 8 months ago

Hmmm...that still leaves the FFI stuff (but it works for other applications, so what would make this one special?), since it behaves the same in both Chrome and Firefox. Could you try and update the method CpComponentExamplesWebApplication class >> #app and replace the content with:

app

    "Answer the unique identifier (a Symbol) for the receiver"

    ^ #fixmesoon

Do a 'reset' from the CodeParadise menu and try to run the application (now named 'fixmesoon').

git-dmou commented 8 months ago

I tried like this : it seems that any name finishing in "example" trigger the problem ! image

git-dmou commented 8 months ago

and it works !

ErikOnBike commented 8 months ago

Not fully sure yet ;-). Could you try and replace the method with this one:

app

    "Answer the unique identifier (a Symbol) for the receiver"

    ^ #'Cmponent-Examples'

I made it a single character shorter, but still has the same 'ending'. I am wondering whether the final URL size (56 bytes/chars) is causing an issue. This is 2 longs (2x 4 bytes) short of 64 bytes, which might be some sort of magic size limit. Please let me know what happens.

ErikOnBike commented 8 months ago

Remember that Soelace-Examples works okay, but also ends with '-Examples'.

git-dmou commented 8 months ago

It works, it should be a length problem ....

git-dmou commented 8 months ago

however, "building-my-first-app" is longer, but has no problem

ErikOnBike commented 8 months ago

Maybe not every length. Could you try the following version? If this works, it is not perse the length. This is a version with the same length but different content. We're just trying to find the cause by taking away possibilities ;-)

app

    "Answer the unique identifier (a Symbol) for the receiver"

    ^ #'Component-Examplex'

Remember to reset the menu before trying to open the application.

ErikOnBike commented 8 months ago

Thx for helping out and testing these things out by the way! 🙏

git-dmou commented 8 months ago

again: http://localhost:8080/static/app.html?Component-Examplex%E2%82%AC/ http://localhost:8080/static/app.html?Component-Examplex%C3%9Es

ErikOnBike commented 8 months ago

Okay. So it seems this specific length is an issue. I'm investigating a little here. I will try to come back with some more tests if you're okay with that.

git-dmou commented 8 months ago

your welcome

ErikOnBike commented 8 months ago

Could you give me the result of evaluating the following in a Playground?

#shell32 asFFILibrary calloutAPIClass

It should probably answer something like FFICalloutAPI or TFCalloutAPI. It is either the regular or the threaded FFI version.

git-dmou commented 8 months ago

TFCalloutAPI

ErikOnBike commented 8 months ago

Could you please evaluate/inspect the following?

TFUFFIDerivedTypeMarshallingTest new
    ffiLibrary: TFTestLibraryUsingSameThreadRunner ;
    pointerToString: 'http://localhost:8080/static/app.html?Component-Examples'.

Does it answer the correct (duplicated) String or does it also have random characters added? And this variant?

TFUFFIDerivedTypeMarshallingTest new
    ffiLibrary: TFTestLibraryUsingWorker ;
    pointerToString: 'http://localhost:8080/static/app.html?Component-Examples'.
git-dmou commented 8 months ago

image

Capture d'écran 2024-01-17 144755
ErikOnBike commented 8 months ago

Have dug deep into the code (into primitives and generated FFI code), but can't find the location where things go wrong. My feeling is it has to do with the FFI (Foreign Function Interface). I'll post a question on the Discord channel. Hopefully someone can help out. Thx so far and I will keep you updated.

git-dmou commented 8 months ago

quite tricky ! the best thing to do so far on windows is to choose a name for the app and to test the generated url in the browser !

astares commented 8 months ago

Strange, doing variations:

WebBrowser openOn: 'http://localhost:8080/static/app.html?Component-Examples'  - APPENDS

WebBrowser openOn: 'http://localhost:8080/static/map.html?Component-Examples'  - APPENDS

WebBrowser openOn: 'http://localhost:8080/static/app.html?ComponentExamples' - WORKS

WebBrowser openOn: 'http://localhost:8080/app.html?Component-Examples'  WORKS

WebBrowser openOn: 'http://localhost:8080/something/app.html?Component-Examples' WORKS

WebBrowser openOn: 'http://localhost/static/app.html?Component-Examples' - WORKS 
ErikOnBike commented 8 months ago

@astares It seems the exact length is an issue. I also posted this on Discord (see link below). Could you try the following on your machine as well?

WebBrowser openOn: 'https://pharo.org?abcdefghijklmnopqrstuvwxyz1234567890ok'.

https://discord.com/channels/223421264751099906/786544722235228160/1197203535285211166

astares commented 8 months ago

Seems to be Pharo related as on DOS it works without additional characters

image
astares commented 8 months ago

@astares It seems the exact length is an issue. I also posted this on Discord (see link below). Could you try the following on your machine as well?

WebBrowser openOn: 'https://pharo.org?abcdefghijklmnopqrstuvwxyz1234567890ok'.

https://discord.com/channels/223421264751099906/786544722235228160/1197203535285211166

Yes - same issue. Seems length based

image
astares commented 8 months ago

opened https://github.com/pharo-project/pharo/issues/15980 as it is more Pharo related than a Code paradise issue

denysos commented 6 months ago

Hello Erik, it seems that this issue is fixed with

Pharo 12.0.0 Build information: Pharo-12.0.0+SNAPSHOT.build.1410.sha.6fa4632c0b60f6690d6af3f7f8fc6f3ab6240112 (64 Bit)

after the UFFI issue https://github.com/pharo-project/pharo/issues/15980 fixed

ErikOnBike commented 6 months ago

@denysos Thx. @astares for the fix! Closing the issue.