Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SegFault on Ubuntu 14.04 #43

Closed
lchabert opened this issue Sep 29, 2015 · 2 comments
Closed

SegFault on Ubuntu 14.04 #43

lchabert opened this issue Sep 29, 2015 · 2 comments

Comments

@lchabert
Copy link

Hello,

I'm trying to use snimpy on my monitoring environnement and a segfault has been raised. On my laptop (where plugins has been developed), i'm using virtualenv and python 2.7. No problem to run my script on my laptop.
On my production environement, no virtualenv but python 2.7 too and script raised a segfault.

On production env, snimpy has been installed with apt-get method.

This is my script:

#!/usr/bin/python
from snimpy.manager import Manager as M
from snimpy.manager import load
import optparse
import os
import sys
import optparse
import struct

load("mibs/SNMPv2-TC.my")
load("mibs/PerfHist-TC-MIB.my")
load("mibs/ADSL-LINE-MIB.my")
load("mibs/IF-MIB.my")
VERSION = "0.1"
OK = 0
WARNING = 1
CRITICAL = 2
UNKNOWN = 3

def _divised_by_ten(value):
   value = value / 10
   return value

def _convert_bytes(value):
   value = value / 1000000.00
   return value

def _run_adsl_state(m):
  for index in m.adslAtucCurrOutputPwr:
    sync_down_speed = m.adslAtucChanCurrTxRate[index]
    sync_up_speed = m.adslAturCurrAttainableRate[index]
    atn = m.adslAtucCurrAtn[index]
    snr = m.adslAturCurrSnrMgn[index]
    error = m.adslAturPerfESs[index]
    text = "ADSL status UP: {0} DOWN: {1}".format(_convert_bytes(sync_up_speed), _convert_bytes(sync_down_speed))

    print text
    sys.exit(0)
  print "Error"
  sys.exit(0)

parser = optparse.OptionParser(
    "%prog [options]", version="%prog " + VERSION)
parser.add_option('-H', '--hostname',
                  dest="hostname", help='Hostname to connect to')
if __name__ == '__main__':
  # Ok first job : parse args
  opts, args = parser.parse_args()
  sys.exit(0)
  host = opts.hostname

  m = M(host=host,
     version=3,
     secname="monit",
     authprotocol="MD5", authpassword="xxxx",
     privprotocol="DES", privpassword="xxxx")
  _run_adsl_state(m)

Please find stack trace related to this code:

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff4aeff74 in duplicateType () from /usr/lib/x86_64-linux-gnu/libsmi.so.2
(gdb) backtrace
#0  0x00007ffff4aeff74 in duplicateType () from /usr/lib/x86_64-linux-gnu/libsmi.so.2
#1  0x00007ffff4b001a1 in smiparse () from /usr/lib/x86_64-linux-gnu/libsmi.so.2
#2  0x00007ffff4af19db in loadModule () from /usr/lib/x86_64-linux-gnu/libsmi.so.2
#3  0x00007ffff4af7c0a in smiLoadModule () from /usr/lib/x86_64-linux-gnu/libsmi.so.2
#4  0x00007ffff4af7e90 in smiReadConfig () from /usr/lib/x86_64-linux-gnu/libsmi.so.2
#5  0x00007ffff4af79c3 in smiInit () from /usr/lib/x86_64-linux-gnu/libsmi.so.2
#6  0x00007ffff4d4019c in _cffi_f_smiInit (self=<optimized out>, arg0=0x7ffff7ea6480) at /usr/lib/python2.7/dist-packages/snimpy/__pycache__/_cffi__x3a5e05ccxa0dd8598.c:929
#7  0x0000000000499c7b in PyEval_EvalFrameEx ()
#8  0x0000000000499ef2 in PyEval_EvalFrameEx ()
#9  0x00000000004a090c in PyEval_EvalCodeEx ()
#10 0x0000000000588d42 in PyEval_EvalCode ()
#11 0x0000000000588dfa in PyImport_ExecCodeModuleEx ()
#12 0x00000000005b1f0f in ?? ()
#13 0x0000000000540948 in ?? ()
#14 0x0000000000487195 in ?? ()
#15 0x00000000005411c1 in ?? ()
#16 0x000000000051dd20 in ?? ()
#17 0x00000000004dc9cb in PyEval_CallObjectWithKeywords ()
#18 0x000000000049b87e in PyEval_EvalFrameEx ()
#19 0x00000000004a090c in PyEval_EvalCodeEx ()
#20 0x0000000000588d42 in PyEval_EvalCode ()
#21 0x0000000000588dfa in PyImport_ExecCodeModuleEx ()
#22 0x00000000005b1f0f in ?? ()
#23 0x0000000000540948 in ?? ()
#24 0x0000000000540d08 in ?? ()
#25 0x0000000000541510 in ?? ()
#26 0x000000000051dc50 in ?? ()
#27 0x00000000004dc9cb in PyEval_CallObjectWithKeywords ()
#28 0x000000000049b87e in PyEval_EvalFrameEx ()
#29 0x00000000004a1634 in ?? ()
#30 0x000000000044e4a5 in PyRun_FileExFlags ()
#31 0x000000000044ec9f in PyRun_SimpleFileExFlags ()
#32 0x000000000044f904 in Py_Main ()
#33 0x00007ffff7818ec5 in __libc_start_main (main=0x44f9c2 <main>, argc=4, argv=0x7fffffffe5d8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe5c8)
    at libc-start.c:287
#34 0x0000000000578c4e in _start ()

Has i can see, libsmi2 generate a "duplicateType" error. Do you know what it means ?
Any relation with apt package ?

Thanks in advance.
Regards.

@vincentbernat
Copy link
Owner

❦ 29 septembre 2015 08:09 -0700, Chabert Loïc [email protected] :

#0 0x00007ffff4aeff74 in duplicateType () from /usr/lib/x86_64-linux-gnu/libsmi.so.2
#1 0x00007ffff4b001a1 in smiparse () from /usr/lib/x86_64-linux-gnu/libsmi.so.2
#2 0x00007ffff4af19db in loadModule () from /usr/lib/x86_64-linux-gnu/libsmi.so.2
#3 0x00007ffff4af7c0a in smiLoadModule () from /usr/lib/x86_64-linux-gnu/libsmi.so.2
#4 0x00007ffff4af7e90 in smiReadConfig () from /usr/lib/x86_64-linux-gnu/libsmi.so.2
#5 0x00007ffff4af79c3 in smiInit () from /usr/lib/x86_64-linux-gnu/libsmi.so.2

At this point, snimpy didn't do anything yet. Do you have anything
suspicious in /etc/smi.conf? I suspect that you could fix your problem
by removing one of the "load" directive in this file. A "bt full" may

give additional hints.

Don't over-comment.
- The Elements of Programming Style (Kernighan & Plauger)

@lchabert
Copy link
Author

lchabert commented Oct 2, 2015

Hello Vincent,

Thanks for your reply. As you said, snimpy modules didn't anything at this point.
I have changed some configuration in smi.conf and it works now.

Thanks.

@lchabert lchabert closed this as completed Oct 2, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants