Hi Yann,

When I am setting Mutex pthread or Mutex Pthread default in httpd.conf,
getting following error

AH00526: Syntax error on line 42 of
/home/hemant_super/hemant/dev_11oct/conf/httpd.conf:
Invalid Mutex argument pthread (Mutex mechanisms are: 'none', 'default',
'fcntl:/path/to/file', 'file:/path/to/file', 'sysvsem', 'sem')

When I tried with Mutex None, it is giving below error
/home/hemant_super/hemant/dev_11oct/bin: ./httpd -V
AH00526: Syntax error on line 42 of
/home/hemant_super/hemant/dev_11oct/conf/httpd.conf:
None is not allowed for mutex type default

Any idea why am I getting this error and how to solve it.

Thanks
Hemant



On Fri, Nov 3, 2017 at 2:56 AM, Yann Ylavic <ylavic....@gmail.com> wrote:

> Hi Hemant,
>
> On Thu, Nov 2, 2017 at 12:08 PM, Hemant Chaudhary
> <hemantdude.chaudh...@gmail.com> wrote:
> >
> > For my product I need to run apache as single process. As httpd -X works
> for
> > me. But the issue is to stop httpd -X, we need to kill process. While
> > killing the process, semaphore exists in kernel directory.
>
> As Luca said, the default semaphore mechanism (i.e. if not changed by
> ./configure) used by httpd is "sysvsem", and it indeed leaks a
> descriptor when not exiting properly (or from debug mode).
>
> The easier way to use another mechanism is the Mutex directive, for
> instance:
>     Mutex pthread default
> defined globally will use a mechanism which does not have this issue.
>
> If you really want to stay with "sysvsem" mechanism, the following
> patch will do it for the debug mode too:
>
> Index: server/mpm/event/event.c
> ===================================================================
> --- server/mpm/event/event.c    (revision 1814101)
> +++ server/mpm/event/event.c    (working copy)
> @@ -691,6 +691,7 @@ static void clean_child_exit(int code)
>
>      if (one_process) {
>          event_note_child_killed(/* slot */ 0, 0, 0);
> +        atexit(apr_terminate);
>      }
>
>      exit(code);
> Index: server/mpm/prefork/prefork.c
> ===================================================================
> --- server/mpm/prefork/prefork.c        (revision 1814101)
> +++ server/mpm/prefork/prefork.c        (working copy)
> @@ -229,6 +229,7 @@ static void clean_child_exit(int code)
>
>      if (one_process) {
>          prefork_note_child_killed(/* slot */ 0, 0, 0);
> +        atexit(apr_terminate);
>      }
>
>      ap_mpm_pod_close(my_bucket->pod);
> Index: server/mpm/worker/worker.c
> ===================================================================
> --- server/mpm/worker/worker.c  (revision 1814101)
> +++ server/mpm/worker/worker.c  (working copy)
> @@ -435,6 +435,7 @@ static void clean_child_exit(int code)
>
>      if (one_process) {
>          worker_note_child_killed(/* slot */ 0, 0, 0);
> +        atexit(apr_terminate);
>      }
>
>      exit(code);
> _
>
> >
> > Therefore I commented following lines in worker.c
> >
> > if ((rv = SAFE_ACCEPT((apr_snprintf(id, sizeof id, "%i",
> > i),ap_proc_mutex_create(&all_buckets[i].mutex,NULL,
> AP_ACCEPT_MUTEX_TYPE,
> > id, s, pconf, 0))))) {
> >            ap_log_error(APLOG_MARK, APLOG_CRIT | level_flags, rv,
> (startup ?
> > NULL : s),  "could not create accept mutex");
> >                  return !OK;
> >
> >  After commenting above line, when I am starting httpd -X, it is giving
> > signal 31 error.
>
> This can't work, the mutex will be used later on so it will crash.
> Thus this change is incomplete, and the complete one is probably more
> complex than the changes proposed above.
>
> >
> > What should I change if I want to start apache in debug mode and not to
> > create semaphore ?
>
> I don't think suppressing this mutex (or any other process/global
> mutex which your configuration may need, soon or later...) is wise.
> You should go with avoiding the leak (as proposed above).
>
>
> Regards,
> Yann.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@httpd.apache.org
> For additional commands, e-mail: users-h...@httpd.apache.org
>
>

Reply via email to