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