cannot import math module in rlm_python

Chinnapaiyan, Nagamani nagamani.chinnapaiyan at viasat.com
Wed Jun 19 15:53:45 UTC 2024


Hi,


We are using latest master branch(#933d82589741cf7e70150eb01744735be3380f5c).

built the rpms on alma8 using redhat/freeradius.spec, noticed python was compiled successfully and installed on an alma8 machine.

we see following error when using python module.(when importing math in example.py).



# radiusd -X

Info  : Copyright 1999-2024 The FreeRADIUS server project and contributors

Info  : There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A

Info  : PARTICULAR PURPOSE

Info  : You may redistribute copies of FreeRADIUS under the terms of the

Info  : GNU General Public License

Info  : For more information about these matters, see the file named COPYRIGHT

Info  : Starting - reading configuration files ...

Debug : Including dictionary file "/etc/raddb/dictionary"

Debug : including configuration file /etc/raddb/radiusd.conf

Debug : Including files in directory "/etc/raddb/template.d/"

Debug : including configuration file /etc/raddb/template.d/default

Debug : including configuration file /etc/raddb/clients.conf

Debug : Including files in directory "/etc/raddb/global.d/"

Debug : including configuration file /etc/raddb/global.d/ldap

Debug : including configuration file /etc/raddb/global.d/python

Debug : Including files in directory "/etc/raddb/mods-enabled/"

Debug : including configuration file /etc/raddb/mods-enabled/always

Debug : including configuration file /etc/raddb/mods-enabled/python

Debug : Including files in directory "/etc/raddb/policy.d/"

Debug : including configuration file /etc/raddb/policy.d/abfab-tr

Debug : including configuration file /etc/raddb/policy.d/accounting

Debug : including configuration file /etc/raddb/policy.d/canonicalisation

Debug : including configuration file /etc/raddb/policy.d/control

Debug : including configuration file /etc/raddb/policy.d/cui

Debug : including configuration file /etc/raddb/policy.d/debug

Debug : including configuration file /etc/raddb/policy.d/dhcp

Debug : including configuration file /etc/raddb/policy.d/eap

Debug : including configuration file /etc/raddb/policy.d/filter

Debug : including configuration file /etc/raddb/policy.d/operator-name

Debug : including configuration file /etc/raddb/policy.d/time

Debug : including configuration file /etc/raddb/policy.d/vendor

Debug : Including files in directory "/etc/raddb/sites-enabled/"

Debug : including configuration file /etc/raddb/sites-enabled/dhcp

Debug : Loaded module process_dhcpv4

Debug : Parsing initial logging configuration.

Debug : main {

Debug :   prefix = /usr

Debug :   log {

Debug :     destination = files

Debug :     syslog_facility = daemon

Debug :     local_state_dir = "/usr/var"

Debug :     logdir = "/usr/var/log"

Debug :     file = /var/log/radius/radius.log

Debug :     suppress_secrets = no

Debug :   }

Debug : }

Debug : Parsing security rules to bootstrap UID / GID / chroot / etc.

Debug : main {

Debug :   log {

Debug :   }

Debug :   security {

Debug :     allow_core_dumps = no

Debug :     allow_vulnerable_openssl = no

Debug :     openssl_fips_mode = no

Debug :   }

Debug :   name = radiusd

Debug :   local_state_dir = "/usr/var"

Debug :   run_dir = /var/run/radiusd

Debug : }

Debug : Parsing main configuration

Debug : main {

Debug :   server dhcp {

Debug :     namespace = dhcpv4

Debug : Loaded module proto_dhcpv4

Debug :     listen {

Debug :       type = Discover

Debug :       type = Request

Debug :       type = Inform

Debug :       type = Release

Debug :       type = Decline

Debug :       transport = udp

Debug : Loaded module proto_dhcpv4_udp

Debug :       udp {

Debug :         ipaddr = 127.0.0.1

Debug :         port = 6700

Debug :         broadcast = no

Debug :         networks {

Debug :         }

Debug :         max_packet_size = 4096

Debug :         max_attributes = 255

Debug :       }

Debug :       limit {

Debug :         cleanup_delay = 5.0

Debug :         idle_timeout = 30.0

Debug :         nak_lifetime = 30.0

Debug :         max_connections = 1024

Debug :         max_clients = 256

Debug :         max_pending_packets = 256

Debug :         priority {

Debug :           Discover = normal

Debug :           Request = normal

Debug :           Decline = normal

Debug :           Release = normal

Debug :           Inform = normal

Debug :           Lease-Query = low

Debug :           Bulk-Lease-Query = low

Debug :         }

Debug :       }

Debug :     }

Debug :   }

Debug :   log {

Debug :     colourise = yes

Debug :   }

Debug :   security {

Debug :   }

Debug :   sbin_dir = "/usr/sbin"

Debug :   logdir = /var/log/radius

Debug :   radacctdir = /var/log/radius/radacct

Debug :   reverse_lookups = no

Debug :   hostname_lookups = yes

Debug :   max_request_time = 30

Debug :   pidfile = /var/run/radiusd/radiusd.pid

Debug :   debug_level = 0

Debug :   max_requests = 16384

Debug :   resources {

Debug :   }

Debug :   thread pool {

Debug :     num_networks = 1

Info  : Dynamically determined thread.workers = 2

Debug :     num_workers = 2

Debug :     openssl_async_pool_init = 64

Debug :     openssl_async_pool_max = 1024

Debug :   }

Debug :   migrate {

Debug :     rewrite_update = false

Debug :     forbid_update = false

Debug :   }

Debug : }

Info  : Switching to configured log settings

Debug :   log debug {

Debug :     destination = null

Debug :     timestamp = yes

Debug :     colourise = no

Debug :   }

Debug : radiusd: #### Loading Clients ####

Debug :   client localhost {

Debug :     ipaddr = 127.0.0.1

Debug :     secret = <<< secret >>>

Debug :     require_message_authenticator = no

Debug :     proto = *

Debug :     limit {

Debug :       max_connections = 16

Debug :       lifetime = 0

Debug :       idle_timeout = 30

Debug :     }

Debug :   }

Debug :   client localhost_ipv6 {

Debug :     ipv6addr = ::1

Debug :     secret = <<< secret >>>

Debug :     limit {

Debug :       max_connections = 16

Debug :       lifetime = 0

Debug :       idle_timeout = 30s

Debug :     }

Debug :   }

Debug :   client public_network {

Debug :     ipv4addr = 0.0.0.0/0

Debug :     shortname = allowAll

Debug :     limit {

Debug :       max_connections = 16

Debug :       lifetime = 0

Debug :       idle_timeout = 30s

Debug :     }

Debug :   }

Info  : Debugger not attached

Info  : systemd watchdog is disabled

Info  : pre-suid-down capabilities: =ep

Warn  : trigger { ... } subsection not found, triggers will be disabled

Debug : #### Instantiating libraries ####

Debug : #### Bootstrapping process modules ####

Debug : #### Bootstrapping protocol modules ####

Debug : #### Instantiating libraries ####

Debug : #### Bootstrapping static modules ####

Debug :  modules {

Debug :     static {

Debug : Loaded module rlm_always

Debug :     always reject {

Debug :       rcode = reject

Debug :     }

Debug :     always fail {

Debug :       rcode = fail

Debug :     }

Debug :     always ok {

Debug :       rcode = ok

Debug :     }

Debug :     always handled {

Debug :       rcode = handled

Debug :     }

Debug :     always invalid {

Debug :       rcode = invalid

Debug :     }

Debug :     always disallow {

Debug :       rcode = disallow

Debug :     }

Debug :     always notfound {

Debug :       rcode = notfound

Debug :     }

Debug :     always noop {

Debug :       rcode = noop

Debug :     }

Debug :     always updated {

Debug :       rcode = updated

Debug :     }

Debug : Instantiating python

Debug :     python {

Debug :       path = /etc/raddb/mods-config/python

Debug :     }

Info  : rlm_python - Python version: 3.8.17 (default, Oct 17 2023, 14:11:04)  [GCC 8.5.0 20210514 (Red Hat 8.5.0-20)]

Warn  : rlm_python - Failed loading libpython symbols into global symbol table: Can't resolve symbol Py_IsInitialized

Info  : rlm_python - Python path set to "/etc/raddb/mods-config/python:/usr/lib64/python38.zip:/usr/lib64/python3.8:/usr/lib64/python3.8/lib-dynload"

Debug : Loaded module rlm_python

Debug :     python {

Debug :       mod_instantiate = "example"

Debug :       func_instantiate = instantiate

Debug :       mod_authorize = "example"

Debug :       func_authorize = authorize

Debug :       mod_authenticate = "example"

Debug :       mod_preacct = "example"

Debug :       mod_accounting = "example"

Debug :       mod_post_auth = "example"

Debug :       func_post_auth = post_auth

Debug :       mod_detach = "example"

Debug :       func_detach = detach

Debug :     }

Debug :     } # static

Debug : #### Bootstrapping rlm modules ####

Debug : Bootstrapping rlm_always "disallow"

Debug : Bootstrapping rlm_always "fail"

Debug : Bootstrapping rlm_always "handled"

Debug : Bootstrapping rlm_always "invalid"

Debug : Bootstrapping rlm_always "noop"

Debug : Bootstrapping rlm_always "notfound"

Debug : Bootstrapping rlm_always "ok"

Debug : Bootstrapping rlm_always "reject"

Debug : Bootstrapping rlm_always "updated"

Debug : #### Instantiating listeners ####

Debug : Compiling policies in server dhcp { ... }

Debug : Compiling policies in - recv Discover {...}

Debug : Compiling policies in - recv Request {...}

Debug : Compiling policies in - recv Decline {...}

Debug : Compiling policies in - recv Release {...}

Debug : Compiling policies in - recv Inform {...}

Debug : Compiling policies in - recv Lease-Query {...}

Warn  : /etc/raddb/sites-enabled/dhcp[296]: Skipping remaining instructions due to 'return'

Warn  : /etc/raddb/sites-enabled/dhcp[308]: Skipping remaining instructions due to 'return'

Warn  : dhcpv4  { ... } section is unused

Debug : #### Instantiating process modules ####

Debug : #### Instantiating protocol modules ####

Debug : Instantiating proto_dhcpv4 "dhcp.dhcpv4"

Debug : Instantiating proto_dhcpv4_udp "dhcp.dhcpv4.udp"

Debug : #### Instantiating rlm modules ####

Debug : Instantiating rlm_always "disallow"

Debug : Instantiating rlm_always "fail"

Debug : Instantiating rlm_always "handled"

Debug : Instantiating rlm_always "invalid"

Debug : Instantiating rlm_always "noop"

Debug : Instantiating rlm_always "notfound"

Debug : Instantiating rlm_always "ok"

Debug : Instantiating rlm_python "python"

Error : python - python_function_load - Module 'example' load failed

Error : python - <class 'ImportError'> (/usr/lib64/python3.8/lib-dynload/math.cpython-38-x86_64-linux-gnu.so: undefined symbol: PyExc_ValueError)

Error : python - [0] /etc/raddb/mods-config/python/example.py:9 at <module>()

Error : /etc/raddb/mods-enabled/python[1]: Instantiation failed for module "python"

Fatal Python error: PyInterpreterState_Delete: remaining subinterpreters

Python runtime state: finalizing (tstate=0x162cf00)



CAUGHT SIGNAL: Aborted

No panic action set









I could actually import math module when running python3.8 separately without any error,

# python3.8

Python 3.8.17 (default, Oct 17 2023, 14:11:04)

[GCC 8.5.0 20210514 (Red Hat 8.5.0-20)] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> import math

>>>





Regards,
Nagamani Chinnapaiyan


More information about the Freeradius-Users mailing list