On 26 November 2017 at 20:57, ÐикенÑий ÐоÑапов <vikenti.potapov@gmail.com> wrote:
I will be glad to help to find solution with this problem that started with later versions of Pharo 6. While Pharo has such problems - it is not production-ready.
Just point me from where to start my investigation of code.
--- The full stack --- WindowsResolver(PlatformResolver)>>cantFindOriginError [ self cantFindOriginError ] in WindowsResolver(PlatformResolver)>> directoryFromEnvVariableNamed: [ ^ arg2 value ] in WindowsResolver(PlatformResolver)>> directoryFromEnvVariableNamed:or: BlockClosure>>cull: Context>>evaluateSignal: Context>>handleSignal: PrimitiveFailed(Exception)>>signal PrimitiveFailed class(SelectorException class)>>signalFor: Win32Environment(Object)>>primitiveFailed: Win32Environment(Object)>>primitiveFailed Win32Environment(Object)>>primitiveFail Win32Environment(OSEnvironment)>>getEnv: Win32Environment>>getEnv: Win32Environment(OSEnvironment)>>at:ifAbsent: [ Smalltalk os environment at: arg1 ifAbsent: [ ] ] in WindowsResolver( PlatformResolver)>>directoryFromEnvVariableNamed:or: BlockClosure>>on:do: WindowsResolver(PlatformResolver)>>directoryFromEnvVariableNamed:or: WindowsResolver(PlatformResolver)>>directoryFromEnvVariableNamed: WindowsResolver>>home WindowsResolver>>documents
Well I see... WindowsResolver>>home "Value of the $USERPROFILE environment variable." ^ self directoryFromEnvVariableNamed: 'USERPROFILE' Win32Environment(OSEnvironment)>>getEnv: "This method calls the Standard C Library getenv() function." <primitive: 'primitiveGetenv' module: '' error: ec> You can see that implementation by searching for "primitiveGetenv(void)" at... * https://raw.githubusercontent.com/OpenSmalltalk/opensmalltalk-vm/Cog/spursrc... where I guess that "var<--'USERPROFILE'" So are you able to compile, run and report with this small C program... int main() { char *result; char *var = "USERPROFILE"; result = getenv(var); if (result != 0) { printf("SUCCESS"); } else { printf("FAILED"); } } Experiment with: * different env vars holding either unicode or non-unicode characters. * https://msdn.microsoft.com/en-us/library/tehxacec.aspx cheers -ben
The overall difficulty here in getting this addressed is difficulty in
reproducing your environment. For example, I think it would be awkward for me to operate with OS locale set to Russian. You'll see little action on it until there is an Issue logged at pharo.fogbugz.com with a simple set of steps to reproduced for standard environments (i.e. using English locales)
Reviewing your other posts, I'd suggest initially creating a script to wrap Pharo startup that cleans all the environment variables to ascii characters, temporarily creating required directories so at lest you can get it started. Then extend that script to reintroduce the error, like a single non-ascii character in a single environment variable that causes an error. That extended part then provides a path for others to reproduce your problem, which you would attach to the Issue. Then as you investigate a solution yourself, ask questions about it on pharo-dev to keep the Issue active and over time you'll likely get some action from others on it.
cheers -ben