Bug 35231 - UMC crashes with broken pipe
UMC crashes with broken pipe
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: UMC (Generic)
UCS 3.2
Other Linux
: P5 normal (vote)
: UCS 4.0-0-errata
Assigned To: Florian Best
Sönke Schwardt-Krummrich
:
: 33360 35640 (view as bug list)
Depends on:
Blocks: 37315
  Show dependency treegraph
 
Reported: 2014-07-01 15:32 CEST by Dirk Wiesenthal
Modified: 2015-03-16 09:34 CET (History)
4 users (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional): Error handling
Max CVSS v3 score:
best: Patch_Available+


Attachments
patch (1.13 KB, patch)
2014-11-12 14:13 CET, Florian Best
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Dirk Wiesenthal univentionstaff 2014-07-01 15:32:40 CEST
Not sure how (and if) this can be provoked intentionally, but my UMC-server crashed (while killing the join module?)

01.07.14 13:56:51.675  MAIN        ( INFO    ) : The session is shutting down. Sending UMC modules an EXIT request (0 processes)
01.07.14 14:02:30.131  MAIN        ( WARN    ) : Socket died (module=udm)
01.07.14 14:02:30.132  MAIN        ( WARN    ) : Module process udm died (pid: 15643, exit status: -1, signal: -1)
01.07.14 14:02:30.132  MAIN        ( INFO    ) : Checking for kill timer ()
01.07.14 14:02:30.132  MAIN        ( WARN    ) : Cleaning up requests
01.07.14 14:02:30.132  MAIN        ( INFO    ) : No pending requests found
01.07.14 14:02:30.132  MAIN        ( WARN    ) : Remove inactivity timer
01.07.14 14:02:30.232  MAIN        ( PROCESS ) : ModuleProcess: child died
01.07.14 14:02:30.232  MAIN        ( INFO    ) : Module process udm died on purpose
01.07.14 14:02:30.232  MAIN        ( INFO    ) : Checking for kill timer ()
01.07.14 14:02:30.427  MAIN        ( INFO    ) : The module join is inactive for too long. Sending EXIT request to module 
01.07.14 14:02:30.427  PROTOCOL    ( INFO    ) : Sending UMCP EXIT REQUEST 140421615042793-27
01.07.14 14:02:30.672  MAIN        ( ERROR   ) : Traceback (most recent call last): 
  File "/usr/sbin/univention-management-console-server", line 209, in <module>
    umc_daemon.do_action()
  File "/usr/lib/pymodules/python2.6/daemon/runner.py", line 186, in do_action
    func(self)
  File "/usr/lib/pymodules/python2.6/daemon/runner.py", line 131, in _start 
    self.app.run()
  File "/usr/sbin/univention-management-console-server", line 192, in run 
    notifier.loop()
  File "/usr/lib/pymodules/python2.6/notifier/nf_generic.py", line 284, in loop
    step() 
  File "/usr/lib/pymodules/python2.6/notifier/nf_generic.py", line 243, in step
    if not timer[ CALLBACK ]():
  File "/usr/lib/pymodules/python2.6/notifier/__init__.py", line 104, in __call__
    return self._function( *tmp, **self._kwargs )
  File "/usr/lib/pymodules/python2.6/univention/management/console/protocol/session.py", line 541, in _inactivitiy_tick
    if self._mod_inactive( module ): # open requests -> waiting
  File "/usr/lib/pymodules/python2.6/univention/management/console/protocol/session.py", line 771, in _mod_inactive
    self.handle_request_exit( req )
  File "/usr/lib/pymodules/python2.6/univention/management/console/protocol/session.py", line 312, in handle_request_exit
    self.__processes[ module_name ].request( msg )
  File "/usr/lib/pymodules/python2.6/univention/management/console/protocol/client.py", line 256, in request
    if self._resend( sock ):
  File "/usr/lib/pymodules/python2.6/univention/management/console/protocol/client.py", line 193, in _resend
    bytessent = sock.send( data ) 
error: [Errno 32] Daten?bergabe unterbrochen (broken pipe)
Comment 1 Alexander Kläser univentionstaff 2014-07-01 15:47:39 CEST
I noticed these tracebacks when doing the following:
1) firewall blocks appcenter.software-univention.de
2) start app center → initial loading endures >2min
3) restart UMC server within this loading procedure
Comment 2 Florian Best univentionstaff 2014-07-01 17:34:25 CEST
Well yes, it's probably reproducible by making a request which isn't answered immediately while killing the process.
At some point the process have to kill itself when receiving SIGINT.
What should the desired behavior be?
→ The module could answer all pending requests with some error like 500 Internal Server Error/etc.
Other suggestions?
Comment 3 Florian Best univentionstaff 2014-10-09 16:15:31 CEST
*** Bug 35640 has been marked as a duplicate of this bug. ***
Comment 4 Florian Best univentionstaff 2014-10-09 16:15:36 CEST
*** Bug 33360 has been marked as a duplicate of this bug. ***
Comment 5 Florian Best univentionstaff 2014-10-09 16:17:06 CEST
(In reply to Florian Best from comment #3)
> *** Bug 35640 has been marked as a duplicate of this bug. ***
See also Bug #35640 comment 1 there?

I experienced this error again with the appcenter:
MAIN        ( INFO    ) : The module appcenter is inactive for too long. Sending EXIT request to module
PROTOCOL    ( INFO    ) : Sending UMCP EXIT REQUEST 141203604715722-22
MAIN        ( ERROR   ) : Traceback (most recent call last):
…
Comment 6 Florian Best univentionstaff 2014-11-12 14:13:44 CET
Created attachment 6357 [details]
patch

Attached a patch for this. This happens when the module exits itself due to session timeout (no incoming requests) while receiving the upstream EXIT request from the UMC-server who wants to do the same.
Comment 7 Florian Best univentionstaff 2014-11-20 19:06:27 CET
Package: univention-management-console
Version: 7.1.63-2.837.201411201850
User: fbest
Branch: ucs_4.0-0
Scope: errata4.0-0

YAML: 2014-11-20-univention-management-console.yaml
Comment 8 Florian Best univentionstaff 2014-11-20 19:07:23 CET
YAML: 2014-11-20-univention-management-console.yaml

Package: univention-management-console
Version: 7.1.63-2.837.201411201850
User: fbest
Branch: ucs_4.0-0
Scope: errata4.0-0
Comment 9 Sönke Schwardt-Krummrich univentionstaff 2014-11-25 21:03:37 CET
(In reply to Florian Best from comment #6)
> Attached a patch for this. This happens when the module exits itself due to
> session timeout (no incoming requests) while receiving the upstream EXIT
> request from the UMC-server who wants to do the same.

Sounds reasonable. However, I was unable to trigger the error case without the fix.

OK: code change
OK: functionality (at least I noticed no new problems)
OK: YAML
Comment 10 Florian Best univentionstaff 2014-11-28 22:33:34 CET
This happened today on demo.univention.de.
Comment 11 Moritz Muehlenhoff univentionstaff 2014-12-04 12:21:07 CET
http://errata.univention.de/ucs/4.0/3.html