On 26 November 2017 at 20:57, Викентий Потапов <vikenti.pota...@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/vm/cointerp.c
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
>
>
>

Reply via email to