2

I'm trying to run Yaws 1.94 on my Mac OS X 10.8 and it crashes. I'm running Erlang R15B01

I am using macports to install this with the commands:

sudo port selfupdate

sudo port install erlang +ssl yaws

export ERL_LIBS=/opt/local/lib/yaws/

sudo mkdir /etc/yaws/

sudo cp /opt/local/etc/yaws/yaws.conf.template /etc/yaws/yaws.conf

When I run yaws, it crashes

$ sudo yaws -i --conf /etc/yaws/yaws.conf 

Erlang R15B01 (erts-5.9.1) [source] [64-bit] [smp:4:4] [async-threads:0] [hipe] [kernel- poll:true]

Eshell V5.9.1  (abort with ^G)
1> 
=INFO REPORT==== 25-Jul-2012::16:36:20 ===
Yaws: Using config file /etc/yaws/yaws.conf

=INFO REPORT==== 25-Jul-2012::16:36:20 ===
yaws debug:Add path "/opt/local/var/yaws/ebin"

=INFO REPORT==== 25-Jul-2012::16:36:20 ===
yaws debug:Add path "/opt/local/lib/yaws/ebin"

=INFO REPORT==== 25-Jul-2012::16:36:20 ===
yaws debug:Add path "/opt/local/lib/yaws/examples/ebin"

=INFO REPORT==== 25-Jul-2012::16:36:20 ===
yaws debug:Running with id="default" (localinstall=false) 
Running with debug checks turned on (slower server) 
 to directory "/opt/local/var/log/yaws"

=INFO REPORT==== 25-Jul-2012::16:36:20 ===
    application: yaws
    exited: {shutdown,{yaws_app,start,[normal,[]]}}
    type: permanent
{"Kernel pid terminated",application_controller,"{application_start_failure,yaws,{shutdown,{yaws_app,start,[normal,[]]}}}"}

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

As a result

When I check to see if there is a yaws process around (ps -efw | grep yaws) and there is none

What am I missing here? I would love to be able to use Yaws on Mac OS X. Thanks

Here is the output from sasl

$ sudo yaws -i --conf /etc/yaws/yaws.conf --erlarg '-boot start_sasl'
Erlang R15B01 (erts-5.9.1) [source] [64-bit] [smp:4:4] [async-threads:0] [hipe] [kernel-poll:true]


=PROGRESS REPORT==== 26-Jul-2012::15:41:44 ===
      supervisor: {local,sasl_safe_sup}
         started: [{pid,<0.34.0>},
                   {name,alarm_handler},
                   {mfargs,{alarm_handler,start_link,[]}},
                   {restart_type,permanent},
                   {shutdown,2000},
                   {child_type,worker}]

=PROGRESS REPORT==== 26-Jul-2012::15:41:44 ===
      supervisor: {local,sasl_safe_sup}
         started: [{pid,<0.35.0>},
                   {name,overload},
                   {mfargs,{overload,start_link,[]}},
                   {restart_type,permanent},
                   {shutdown,2000},
                   {child_type,worker}]

=PROGRESS REPORT==== 26-Jul-2012::15:41:44 ===
      supervisor: {local,sasl_sup}
         started: [{pid,<0.33.0>},
                   {name,sasl_safe_sup},
                   {mfargs,
                       {supervisor,start_link,
                           [{local,sasl_safe_sup},sasl,safe]}},
                   {restart_type,permanent},
                   {shutdown,infinity},
                   {child_type,supervisor}]

=PROGRESS REPORT==== 26-Jul-2012::15:41:44 ===
      supervisor: {local,sasl_sup}
         started: [{pid,<0.36.0>},
                   {name,release_handler},
                   {mfargs,{release_handler,start_link,[]}},
                   {restart_type,permanent},
                   {shutdown,2000},
                   {child_type,worker}]

=PROGRESS REPORT==== 26-Jul-2012::15:41:44 ===
     application: sasl
      started_at: nonode@nohost

=PROGRESS REPORT==== 26-Jul-2012::15:41:44 ===
      supervisor: {local,yaws_sup}
         started: [{pid,<0.43.0>},
                   {name,yaws_log},
                   {mfargs,{yaws_log,start_link,[]}},
                   {restart_type,permanent},
                   {shutdown,5000},
                   {child_type,worker}]

=PROGRESS REPORT==== 26-Jul-2012::15:41:44 ===
      supervisor: {local,yaws_sup}
         started: [{pid,<0.44.0>},
                   {name,yaws_trace},
                   {mfargs,{yaws_trace,start_link,[]}},
                   {restart_type,permanent},
                   {shutdown,5000},
                   {child_type,worker}]
Eshell V5.9.1  (abort with ^G)
1> 
=INFO REPORT==== 26-Jul-2012::15:41:44 ===
Yaws: Using config file /etc/yaws/yaws.conf

=INFO REPORT==== 26-Jul-2012::15:41:44 ===
yaws debug:Add path "/opt/local/var/yaws/ebin"

=INFO REPORT==== 26-Jul-2012::15:41:44 ===
yaws debug:Add path "/opt/local/lib/yaws/ebin"

=INFO REPORT==== 26-Jul-2012::15:41:44 ===
yaws debug:Add path "/opt/local/lib/yaws/examples/ebin"

=INFO REPORT==== 26-Jul-2012::15:41:44 ===
yaws debug:Running with id="default" (localinstall=false) 
Running with debug checks turned on (slower server) 
Logging to directory "/opt/local/var/log/yaws"

=CRASH REPORT==== 26-Jul-2012::15:41:44 ===
crasher:
initial call: yaws_server:init/1
pid: <0.45.0>
registered_name: []
exception exit: {{badmatch,{error,enotdir}},
                 [{yaws_server,setup_dirs,1,
                               [{file,"yaws_server.erl"},{line,525}]},
                  {yaws_server,init2,5,
                               [{file,"yaws_server.erl"},{line,200}]},
                  {gen_server,init_it,6,
                              [{file,"gen_server.erl"},{line,304}]},
                  {proc_lib,init_p_do_apply,3,
                            [{file,"proc_lib.erl"},{line,227}]}]}
  in function  gen_server:init_it/6 (gen_server.erl, line 328)
ancestors: [yaws_sup,<0.41.0>]
messages: []
links: [<0.42.0>]
dictionary: [{start_time,{{2012,7,26},{15,41,44}}},
              {gc,{gconf,"/opt/local/lib/yaws",false,102,
                         "/opt/local/var/log/yaws",
                         ["/opt/local/var/yaws/ebin",
                          "/opt/local/lib/yaws/ebin",
                          "/opt/local/lib/yaws/examples/ebin"],
                         [],30000,nolimit,400,1000000,8000,nolimit,[],
                         10240,[],1000000,0,
                         ["/opt/local/lib/yaws/include",
                          "/opt/local/lib/yaws/examples/include"],
                         "/usr/bin/php-cgi","Yaws 1.94","default",false,
                         [],yaws_session_server,8}}]
trap_exit: true
status: running
heap_size: 2584
stack_size: 24
reductions: 40977
neighbours:

=SUPERVISOR REPORT==== 26-Jul-2012::15:41:44 ===
 Supervisor: {local,yaws_sup}
 Context:    start_error
 Reason:     {{badmatch,{error,enotdir}},
              [{yaws_server,setup_dirs,1,
                            [{file,"yaws_server.erl"},{line,525}]},
               {yaws_server,init2,5,[{file,"yaws_server.erl"},{line,200}]},
               {gen_server,init_it,6,[{file,"gen_server.erl"},{line,304}]},
               {proc_lib,init_p_do_apply,3,
                         [{file,"proc_lib.erl"},{line,227}]}]}
 Offender:   [{pid,undefined},
              {name,yaws_server},
              {mfargs,
                  {yaws_server,start_link,
                      [{env,true,false,false,
                           {file,"/etc/yaws/yaws.conf"},
                           false,false,"default"}]}},
              {restart_type,permanent},
              {shutdown,120000},
              {child_type,worker}]


=INFO REPORT==== 26-Jul-2012::15:41:44 ===
application: yaws
exited: {shutdown,{yaws_app,start,[normal,[]]}}
type: permanent
{"Kernel pid terminated",application_controller,"{application_start_failure,yaws,{shutdown,{yaws_app,start,[normal,[]]}}}"}

Crash dump was written to: erl_crash.dump
Kernel pid terminated (application_controller) ({application_start_failure,yaws,{shutdown,{yaws_app,start,[normal,[]]}}})
bibekp
  • 101
  • 1
  • 5

2 Answers2

1

I'm not sure of the origins or viability of the builds of Erlang and Yaws one can retrieve via macports, so I have no idea whether they actually work or not. Personally I don't use macports because of problems with other software I got from there.

To try to get more information about what's going wrong with your Yaws installation, start Yaws like this:

sudo yaws -i --conf /etc/yaws/yaws.conf --erlarg '-boot start_sasl'

Hopefully sasl can give us more information about the underlying issues.

Steve Vinoski
  • 19,847
  • 3
  • 31
  • 46
  • I've appended the output of `sasl` to the original ticket. I may just abandon macports for this then. Thanks for the speedy reply – bibekp Jul 26 '12 at 22:56
  • I tried to run yaws using the version from git, that is: `git clone git://github.com/klacke/yaws.git` and then `autoconf` `./configure` `make && sudo make install`. When I ran yaws, using `sudo /usr/local/bin/yaws -i --conf /etc/yaws/yaws.conf --erlarg '-boot start_sasl'`, I got the same results as above (crashing).. Not sure what is wrong. – bibekp Jul 27 '12 at 01:23
  • Oh, I forgot, probably should re-install erlang too – bibekp Jul 27 '12 at 01:33
  • Ok, re-installed erlang from `http://www.erlang.org/download.html` and re-installed yaws again from the git clone. Getting the same results. Lol. (Only thing I can think of is the yaws binary in `/opt/local/bin/yaws` the right one? This is the result of doing a `which yaws`) – bibekp Jul 27 '12 at 01:56
  • You might check to see what the HOME environment variable is set to for the root user. From the sasl output it looks like Yaws is having problems in the directory under which it stores certain control files; these are ordinarily stored under subdirectories within `$HOME/.yaws`. – Steve Vinoski Jul 27 '12 at 07:44
1

looking at the error in the crash message exception exit: {badmatch,{error,enotdir}} . This looks like yaws expected a directory somewhere and its finding something else. i suggest that you look at the line 525 in the file yaws_server.erl. you could even put an io:format/2 and see what yaws is getting at that point. It could be a mal-formatted directory name, perhaps containing spaces. You could also try to check the conf file its using to start and look at the PATHS that the server wants to use as the docroot. Also, check the permissions of the installation directory of yaws, and all the Directories that yaws wants to look into.

Muzaaya Joshua
  • 7,736
  • 3
  • 47
  • 86