2009-05-26 4 views
3

Je suis en train de commencer un noeud Erlang nommé en utilisant l'option -sname dans Windows XP Home, mais quand je lance ERL, il imprime un long message d'erreur, que je ne comprends pas, et se ferme:Pourquoi ne puis-je pas démarrer un noeud Erlang nommé dans Windows?

>erl -sname allyourcode 
{error_logger,{{2009,5,25},{16,20,57}},"Protocol: ~p: register error: ~p~n",["in 
et_tcp",{{badmatch,{error,econnrefused}},[{inet_tcp_dist,listen,1},{net_kernel,s 
tart_protos,4},{net_kernel,start_protos,3},{net_kernel,init_node,2},{net_kernel, 
init,1},{gen_server,init_it,6},{proc_lib,init_p_do_apply,3}]}]} 
{error_logger,{{2009,5,25},{16,20,57}},crash_report,[[{initial_call,{net_kernel, 
init,['Argument__1']}},{pid,},{registered_name,[]},{error_info,{exit,{er 
ror,badarg},[{gen_server,init_it,6},{proc_lib,init_p_do_apply,3}]}},{ancestors,[ 
net_sup,kernel_sup,]},{messages,[]},{links,[#Port,]},{dicti 
onary,[{longnames,false}]},{trap_exit,true},{status,running},{heap_size,610},{st 
ack_size,24},{reductions,490}],[]]} 
{error_logger,{{2009,5,25},{16,20,57}},supervisor_report,[{supervisor,{local,net 
_sup}},{errorContext,start_error},{reason,{'EXIT',nodistribution}},{offender,[{p 
id,undefined},{name,net_kernel},{mfa,{net_kernel,start_link,[[allyourcode,shortn 
ames]]}},{restart_type,permanent},{shutdown,2000},{child_type,worker}]}]} 
{error_logger,{{2009,5,25},{16,20,57}},supervisor_report,[{supervisor,{local,ker 
nel_sup}},{errorContext,start_error},{reason,shutdown},{offender,[{pid,undefined 
},{name,net_sup},{mfa,{erl_distribution,start_link,[]}},{restart_type,permanent} 
,{shutdown,infinity},{child_type,supervisor}]}]} 
{error_logger,{{2009,5,25},{16,20,57}},std_info,[{application,kernel},{exited,{s 
hutdown,{kernel,start,[normal,[]]}}},{type,permanent}]} 
{"Kernel pid terminated",application_controller,"{application_start_failure,kern 
el,{shutdown,{kernel,start,[normal,[]]}}}"} 

Crash dump was written to: erl_crash.dump 
Kernel pid terminated (application_controller) ({application_start_failure,kerne 
l,{shutdown,{kernel,start,[normal,[]]}}}) 

Je voudrais inclure le fichier erl_crash.dump, mais je ne connais pas un bon moyen de le faire, car c'est assez long. Au début, je pensais avoir un problème de pare-feu, parce que la première fois que j'ai essayé de le faire, mon pare-feu a demandé si j'autoriserais différents programmes, ce que j'ai fait; Cependant, même après avoir désactivé mon pare-feu, j'ai toujours le même problème. En revanche, l'utilisation de -name ne semble pas aider non plus.

Répondre

4

Oui, vous devrez peut-être même redémarrer votre système d'exploitation - pour vérifier si cela est vrai, vous pouvez également simplement démarrer un nœud avec un nom différent, il est généralement préférable d'utiliser un nom complet, tel que:

ERL -nom [email protected] -setcookie KILLER

Ensuite, démarrez un autre en utilisant:

ERL -nom [email protected] -setcookie KILLER

et essayer de ping sur l'autre noeud:

net_adm: ping ('[email protected]').

Vous devriez recevoir un message 'pong'.

utilisation suivante

nœuds().

pour voir tous les nœuds visibles.

+0

J'ai essayé de fermer toutes mes fenêtres cmd avant de démarrer erl, mais cela n'a pas fonctionné. Après avoir redémarré Windows, comme vous l'avez suggéré, j'ai pu lancer erl -sname foo. Cela signifie-t-il que j'avais des processus erl en cours d'exécution et que je ne le savais même pas? – allyourcode

+0

Oui, n'oubliez pas qu'un shell erlang peut avoir un nombre arbitraire de processus en cours d'exécution, sans utiliser les fonctionnalités avancées fournies par le shell, il peut ne pas être évident ce qui est/était déjà en cours d'exécution ou si l'un de ces processus n'a pas été terminé correctement, de sorte qu'il existe des restes d'informations de processus. – none

2

Je pense que vous constaterez que vous avez déjà démarré un noeud avec ce nom. Essayez de fermer toutes les fenêtres de votre console Erlang et réessayez.

2
  1. Vous devez vous assurer que vous n'utilisez pas un nom déjà enregistré (bien sûr): cela inclut tout nom déjà revendiqué par Erlang.

  2. Si vous démarrez sur le même ordinateur mais avec un utilisateur différent, assurez-vous que vos cookies sont les mêmes.

Questions connexes