Closed AntonPetrochenko closed 2 years ago
Hi! And thanks for reporting this.
Could you please elaborate the issue and where the error happens (reproducer, stack trace, etc.)? That would help determine whether this is a bug, design error, etc.
I would also appreciate to have a look at your patch too please.
Thanks again!
More in-depth explanation from the little debugging I could do at work:
When creating a proxy object for a remote dbus object which has a method and a property declared with the same name, such as a systemd unit obtained from org.freedesktop.systemd1, the library will fail to create the proxy and die attempting to write to it's own readonly field, as the name is already taken when casting the object to a lua table.
Reproducer:
p = require("dbus_proxy")
proxy = p.Proxy:new(
{
bus = p.Bus.SYSTEM,
name = "org.freedesktop.systemd1",
interface = "org.freedesktop.systemd1.Unit",
path = "/org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice" --any systemd unit i tested worked
}
)
Patch:
...
400 | local function generate_fields(proxy)
...
434 | for _, property in ipairs(iface.properties) do
435 | proxy.accessors["prop_" .. property.name] = generate_accessor(property)
436 | end --^^^^^^^^^^
...
Stack trace... as soon as I get to work, from memory as I debugged the issue myself it died right on the call to :new
and bounced into generate_fields
, but that reproducer should give you the right stack trace.
Thank you very much. That should suffice.
It's a bummer though that there exist both properties and methods with the same name.
I'll have a look.
You really sent me down a rabbit hole... but it was fun (not so fun to dig out the systemd information TBH).
I think that this is a bug after all, my solution is at #9
@AntonPetrochenko would you mind trying out the amended code from #9 and let me know whether you encounter any issues please :pray: ?
Thank you!
Tried it out. No crash, but _Restart
seems to contain a nil value
I got a recursive dump of the proxy object and the accessors for it are there
``` #GetAsync = function: 0x55c598ee0160 #AttachProcessesAsync = function: 0x55c5992fd490 #SetProperties = function: 0x55c599310760 #Ref = function: 0x55c599310b40 #Stop = function: 0x55c599220c10 #Start = function: 0x55c59921ff20 #ReloadAsync = function: 0x55c5990993c0 #ThawAsync = function: 0x55c599311c70 #Ping = function: 0x55c599187f70 #GetMachineId = function: 0x55c599188bc0 #RestartAsync = function: 0x55c5990997a0 #ResetFailedAsync = function: 0x55c599310530 #Thaw = function: 0x55c599311ac0 #Introspect = function: 0x55c599194000 #FreezeAsync = function: 0x55c599311890 #Freeze = function: 0x55c5993116e0 #CleanAsync = function: 0x55c5993114b0 #GetAllAsync = function: 0x55c598edfc00 #name_owner = :1.1 #Clean = function: 0x55c599311300 #object_path = /org/freedesktop/systemd1/unit/sshd_2eservice #UnrefAsync = function: 0x55c5993110d0 #AttachProcesses = function: 0x55c598f494f0 #{1} flags # |NONE = true #ReloadOrTryRestartAsync = function: 0x55c59909a840 #SetPropertiesAsync = function: 0x55c599310910 #ResetFailed = function: 0x55c59909b230 #interface = org.freedesktop.systemd1.Unit #StopAsync = function: 0x55c599220dc0 #ReloadOrTryRestart = function: 0x55c59909a690 #Set = function: 0x55c598edd8f0 #GetMachineIdAsync = function: 0x55c599188df0 #EnqueueJobAsync = function: 0x55c59909ac20 #IntrospectAsync = function: 0x55c598f72d50 #EnqueueJob = function: 0x55c59909aa70 #RefAsync = function: 0x55c599310cf0 #Kill = function: 0x55c59909ae50 #ReloadOrRestartAsync = function: 0x55c59909a460 #GetAll = function: 0x55c598ec03a0 #KillAsync = function: 0x55c59909b000 #TryRestartAsync = function: 0x55c599323360 #name = org.freedesktop.systemd1 #GetProcesses = function: 0x55c599189800 #TryRestart = function: 0x55c5993231b0 #Restart = function: 0x55c5990995f0 #Reload = function: 0x55c599099210 #ReloadOrRestart = function: 0x55c59909a2e0 #SetAsync = function: 0x55c5991b4ad0 #connection = lgi.obj 0x55c598efa030:Gio.DBusConnection(GDBusConnection) #GetProcessesAsync = function: 0x55c598ee0f40 #Unref = function: 0x55c599310f20 #{1} signals # |PropertiesChanged = true #StartAsync = function: 0x55c599220a10 #{362} accessors # |{2} BindPaths # | |getter = function: 0x55c599000910 # | |setter = function: 0x55c599000b20 # |{2} LimitCORE # | |getter = function: 0x55c5990f3e30 # | |setter = function: 0x55c5990f5930 # |{2} ExecStopPostEx # | |getter = function: 0x55c599147e50 # | |setter = function: 0x55c599149560 # |{2} FileDescriptorStoreMax # | |getter = function: 0x55c598f6c300 # | |setter = function: 0x55c598f6b6f0 # |{2} Refs # | |getter = function: 0x55c59908fa90 # | |setter = function: 0x55c59908fca0 # |{2} SELinuxContext # | |getter = function: 0x55c5990bbe10 # | |setter = function: 0x55c5990bbff0 # |{2} LogNamespace # | |getter = function: 0x55c598f79890 # | |setter = function: 0x55c598f81e60 # |{2} ActiveEnterTimestampMonotonic # | |getter = function: 0x55c59900c370 # | |setter = function: 0x55c59900c580 # |{2} Conflicts # | |getter = function: 0x55c5990ba660 # | |setter = function: 0x55c5990ba870 # |{2} CPUAffinityFromNUMA # | |getter = function: 0x55c5991708e0 # | |setter = function: 0x55c599172d40 # |{2} DeviceAllow # | |getter = function: 0x55c5992734a0 # | |setter = function: 0x55c599045710 # |{2} JobTimeoutUSec # | |getter = function: 0x55c599087c00 # | |setter = function: 0x55c599087e10 # |{2} FailureAction # | |getter = function: 0x55c59908d720 # | |setter = function: 0x55c59908d930 # |{2} TTYVTDisallocate # | |getter = function: 0x55c598fb1230 # | |setter = function: 0x55c59909b550 # |{2} LimitNICESoft # | |getter = function: 0x55c59912cfc0 # | |setter = function: 0x55c59912d9a0 # |{2} ProtectHostname # | |getter = function: 0x55c599314b80 # | |setter = function: 0x55c599314d90 # |{2} RemoveIPC # | |getter = function: 0x55c598f4db00 # | |setter = function: 0x55c598ffae10 # |{2} GID # | |getter = function: 0x55c5991bee90 # | |setter = function: 0x55c598fe77b0 # |{2} SourcePath # | |getter = function: 0x55c5990095e0 # | |setter = function: 0x55c5990097f0 # |{2} CanClean # | |getter = function: 0x55c599084450 # | |setter = function: 0x55c599084660 # |{2} Personality # | |getter = function: 0x55c598eb7ab0 # | |setter = function: 0x55c598e47fa0 # |{2} KeyringMode # | |getter = function: 0x55c5993310a0 # | |setter = function: 0x55c5993312b0 # |{2} IPEgressBytes # | |getter = function: 0x55c599130720 # | |setter = function: 0x55c59917c0e0 # |{2} StandardInputFileDescriptorName # | |getter = function: 0x55c598ffd220 # | |setter = function: 0x55c598fa34c0 # |{2} LimitAS # | |getter = function: 0x55c599106520 # | |setter = function: 0x55c599107c20 # |{2} StandardError # | |getter = function: 0x55c59931abc0 # | |setter = function: 0x55c598efc3e0 # |{2} CPUShares # | |getter = function: 0x55c59910f410 # | |setter = function: 0x55c599112300 # |{2} LimitCPU # | |getter = function: 0x55c5991af5a0 # | |setter = function: 0x55c5991afb60 # |{2} LimitMSGQUEUE # | |getter = function: 0x55c599123560 # | |setter = function: 0x55c599123f30 # |{2} LimitFSIZE # | |getter = function: 0x55c5991b9720 # | |setter = function: 0x55c5991bb7a0 # |{2} StandardErrorFileDescriptorName # | |getter = function: 0x55c598f7a140 # | |setter = function: 0x55c598f7a320 # |{2} SyslogIdentifier # | |getter = function: 0x55c599118b50 # | |setter = function: 0x55c5990d72d0 # |{2} RuntimeMaxUSec # | |getter = function: 0x55c598fd7ec0 # | |setter = function: 0x55c5990cbd00 # |{2} FinalKillSignal # | |getter = function: 0x55c598efe2c0 # | |setter = function: 0x55c598efe4d0 # |{2} StandardOutputFileDescriptorName # | |getter = function: 0x55c598fa82a0 # | |setter = function: 0x55c598eb8d90 # |{2} DisableControllers # | |getter = function: 0x55c599198b10 # | |setter = function: 0x55c5991990d0 # |{2} RootDirectoryStartOnly # | |getter = function: 0x55c5991367b0 # | |setter = function: 0x55c5990ce6f0 # |{2} Names # | |getter = function: 0x55c5990c4c10 # | |setter = function: 0x55c5990c4e20 # |{2} DynamicUser # | |getter = function: 0x55c599317560 # | |setter = function: 0x55c598f4d800 # |{2} ReloadPropagatedFrom # | |getter = function: 0x55c599006340 # | |setter = function: 0x55c599006550 # |{2} JoinsNamespaceOf # | |getter = function: 0x55c599006850 # | |setter = function: 0x55c599006a60 # |{2} UnitFileState # | |getter = function: 0x55c59900a000 # | |setter = function: 0x55c59900a210 # |{2} IPIngressPackets # | |getter = function: 0x55c599174c80 # | |setter = function: 0x55c599175780 # |{2} ExecMainCode # | |getter = function: 0x55c599103280 # | |setter = function: 0x55c599104aa0 # |{2} IOWriteIOPSMax # | |getter = function: 0x55c59910ffd0 # | |setter = function: 0x55c599115560 # |{2} TasksMax # | |getter = function: 0x55c598fffab0 # | |setter = function: 0x55c598f9edd0 # |{2} SystemCallArchitectures # | |getter = function: 0x55c5991902a0 # | |setter = function: 0x55c599190480 # |{2} PrivateMounts # | |getter = function: 0x55c598e98f50 # | |setter = function: 0x55c598e99130 # |{2} RefuseManualStart # | |getter = function: 0x55c599085890 # | |setter = function: 0x55c599085aa0 # |{2} CPUUsageNSec # | |getter = function: 0x55c59915c4c0 # | |setter = function: 0x55c59915e120 # |{2} LimitDATA # | |getter = function: 0x55c5991bf9e0 # | |setter = function: 0x55c5990cb3b0 # |{2} IPAddressDeny # | |getter = function: 0x55c5990cae50 # | |setter = function: 0x55c5991931d0 # |{2} RestrictSUIDSGID # | |getter = function: 0x55c598e9eaa0 # | |setter = function: 0x55c599000100 # |{2} LimitSTACKSoft # | |getter = function: 0x55c5990efc30 # | |setter = function: 0x55c5990f21c0 # |{2} RootImage # | |getter = function: 0x55c5991423e0 # | |setter = function: 0x55c5991431a0 # |{2} CleanResult # | |getter = function: 0x55c5991a90d0 # | |setter = function: 0x55c5991a9f90 # |{2} LogRateLimitIntervalUSec # | |getter = function: 0x55c598f8f720 # | |setter = function: 0x55c598f8fa70 # |{2} PrivateTmp # | |getter = function: 0x55c599091000 # | |setter = function: 0x55c5990911e0 # |{2} TimeoutAbortUSec # | |getter = function: 0x55c598fc1ba0 # | |setter = function: 0x55c598fbf530 # |{2} MemorySwapMax # | |getter = function: 0x55c599158f20 # | |setter = function: 0x55c59915d140 # |{2} SameProcessGroup # | |getter = function: 0x55c599321230 # | |setter = function: 0x55c599321410 # |{2} USBFunctionDescriptors # | |getter = function: 0x55c5991ac460 # | |setter = function: 0x55c5991ae120 # |{2} JobRunningTimeoutUSec # | |getter = function: 0x55c599088110 # | |setter = function: 0x55c599088320 # |{2} LimitCPUSoft # | |getter = function: 0x55c5991b1d00 # | |setter = function: 0x55c5991b8400 # |{2} ProtectKernelModules # | |getter = function: 0x55c598f00940 # | |setter = function: 0x55c598f00b20 # |{2} Requires # | |getter = function: 0x55c5990c5630 # | |setter = function: 0x55c5990c5840 # |{2} BlockIOWeight # | |getter = function: 0x55c59914f350 # | |setter = function: 0x55c599151af0 # |{2} LogsDirectoryMode # | |getter = function: 0x55c5990046d0 # | |setter = function: 0x55c598e48900 # |{2} IPIngressBytes # | |getter = function: 0x55c59916fcb0 # | |setter = function: 0x55c599170bd0 # |{2} User # | |getter = function: 0x55c598ee10a0 # | |setter = function: 0x55c598ee1280 # |{2} RebootArgument # | |getter = function: 0x55c59908eb60 # | |setter = function: 0x55c59908ed70 # |{2} LimitNPROCSoft # | |getter = function: 0x55c59910fd20 # | |setter = function: 0x55c599112720 # |{2} FailureActionExitStatus # | |getter = function: 0x55c59908dc30 # | |setter = function: 0x55c59908de40 # |{2} MountImages # | |getter = function: 0x55c599157f20 # | |setter = function: 0x55c599159f70 # |{2} StartLimitBurst # | |getter = function: 0x55c59908cd00 # | |setter = function: 0x55c59908cf10 # |{2} GuessMainPID # | |getter = function: 0x55c59913abb0 # | |setter = function: 0x55c599168750 # |{2} MemoryAccounting # | |getter = function: 0x55c598f49470 # | |setter = function: 0x55c59917fb40 # |{2} DefaultMemoryMin # | |getter = function: 0x55c59913f8e0 # | |setter = function: 0x55c5991604a0 # |{2} LimitNOFILE # | |getter = function: 0x55c599100eb0 # | |setter = function: 0x55c599101470 # |{2} UMask # | |getter = function: 0x55c5991ac210 # | |setter = function: 0x55c5991ad550 # |{2} IOWriteOperations # | |getter = function: 0x55c59919e110 # | |setter = function: 0x55c5991a1460 # |{2} StatusErrno # | |getter = function: 0x55c599199320 # | |setter = function: 0x55c59919aa30 # |{2} InvocationID # | |getter = function: 0x55c59908f070 # | |setter = function: 0x55c59908f280 # |{2} StopWhenUnneeded # | |getter = function: 0x55c599085380 # | |setter = function: 0x55c599085590 # |{2} TimeoutStopUSec # | |getter = function: 0x55c598fc46a0 # | |setter = function: 0x55c598fc28e0 # |{2} IOReadBytes # | |getter = function: 0x55c5991827b0 # | |setter = function: 0x55c59931c1f0 # |{2} WatchdogTimestampMonotonic # | |getter = function: 0x55c5990bcaa0 # | |setter = function: 0x55c598fc43e0 # |{2} ConfigurationDirectoryMode # | |getter = function: 0x55c59907b050 # | |setter = function: 0x55c59907b260 # |{2} RootVerity # | |getter = function: 0x55c599154bb0 # | |setter = function: 0x55c5991566b0 # |{2} RootDirectory # | |getter = function: 0x55c59913eed0 # | |setter = function: 0x55c599140bc0 # |{2} ExecConditionEx # | |getter = function: 0x55c5991133f0 # | |setter = function: 0x55c599114700 # |{2} IOReadOperations # | |getter = function: 0x55c59907f4c0 # | |setter = function: 0x55c598fdc520 # |{2} IPEgressFilterPath # | |getter = function: 0x55c599196610 # | |setter = function: 0x55c599196c20 # |{2} MemoryDenyWriteExecute # | |getter = function: 0x55c598e9e230 # | |setter = function: 0x55c598e9e410 # |{2} RestartUSec # | |getter = function: 0x55c598ff5d90 # | |setter = function: 0x55c598ff25e0 # |{2} CPUAccounting # | |getter = function: 0x55c598fb9db0 # | |setter = function: 0x55c598f764e0 # |{2} OnFailureJobMode # | |getter = function: 0x55c599086cd0 # | |setter = function: 0x55c599086ee0 # |{2} WatchdogTimestamp # | |getter = function: 0x55c5990be2f0 # | |setter = function: 0x55c5990bd910 # |{2} InactiveEnterTimestamp # | |getter = function: 0x55c5990825f0 # | |setter = function: 0x55c599082800 # |{2} AllowedCPUs # | |getter = function: 0x55c59914e380 # | |setter = function: 0x55c599150490 # |{2} Job # | |getter = function: 0x55c599084e70 # | |setter = function: 0x55c599085080 # |{2} Result # | |getter = function: 0x55c59919f080 # | |setter = function: 0x55c5991a0490 # |{2} LoadCredential # | |getter = function: 0x55c598f650e0 # | |setter = function: 0x55c598f652c0 # |{2} ExecStartEx # | |getter = function: 0x55c599125400 # | |setter = function: 0x55c5991266e0 # |{2} StandardInput # | |getter = function: 0x55c599098ed0 # | |setter = function: 0x55c599319f60 # |{2} SecureBits # | |getter = function: 0x55c598ffd490 # | |setter = function: 0x55c598ffd670 # |{2} TimeoutStartUSec # | |getter = function: 0x55c598fefa40 # | |setter = function: 0x55c598fe03e0 # |{2} ExecStartPostEx # | |getter = function: 0x55c59912dbf0 # | |setter = function: 0x55c59910b760 # |{2} DevicePolicy # | |getter = function: 0x55c599241ca0 # | |setter = function: 0x55c599216310 # |{2} CPUQuotaPerSecUSec # | |getter = function: 0x55c59912be40 # | |setter = function: 0x55c59913b6a0 # |{2} LimitCORESoft # | |getter = function: 0x55c5990f7160 # | |setter = function: 0x55c5990f7b30 # |{2} StateChangeTimestampMonotonic # | |getter = function: 0x55c59900af30 # | |setter = function: 0x55c59900b140 # |{2} NFileDescriptorStore # | |getter = function: 0x55c5990ed460 # | |setter = function: 0x55c599127000 # |{2} LimitDATASoft # | |getter = function: 0x55c5990ea2c0 # | |setter = function: 0x55c5990eb480 # |{2} ExecMainStartTimestamp # | |getter = function: 0x55c5990ef900 # | |setter = function: 0x55c5990f1280 # |{2} StartupBlockIOWeight # | |getter = function: 0x55c59915d3a0 # | |setter = function: 0x55c599166f90 # |{2} FreezerState # | |getter = function: 0x55c5990086b0 # | |setter = function: 0x55c5990088c0 # |{2} RuntimeDirectoryMode # | |getter = function: 0x55c598f33770 # | |setter = function: 0x55c5990015c0 # |{2} StateDirectoryMode # | |getter = function: 0x55c599001da0 # | |setter = function: 0x55c599312c40 # |{2} BlockIOWriteBandwidth # | |getter = function: 0x55c598e9bd10 # | |setter = function: 0x55c598f7e200 # |{2} SuccessExitStatus # | |getter = function: 0x55c598ea36f0 # | |setter = function: 0x55c599126400 # |{2} BoundBy # | |getter = function: 0x55c5990b9c40 # | |setter = function: 0x55c5990b9e50 # |{2} RootHashSignature # | |getter = function: 0x55c59914d080 # | |setter = function: 0x55c59914fe20 # |{2} PassEnvironment # | |getter = function: 0x55c5991a6e20 # | |setter = function: 0x55c5991a80e0 # |{2} ExecStartPreEx # | |getter = function: 0x55c59911d610 # | |setter = function: 0x55c59911f260 # |{2} ExecStop # | |getter = function: 0x55c59913b8e0 # | |setter = function: 0x55c59913d4e0 # |{2} PIDFile # | |getter = function: 0x55c599319db0 # | |setter = function: 0x55c598f03620 # |{2} Slice # | |getter = function: 0x55c59914cd90 # | |setter = function: 0x55c59914e620 # |{2} RuntimeDirectory # | |getter = function: 0x55c5990018c0 # | |setter = function: 0x55c599001aa0 # |{2} BlockIOAccounting # | |getter = function: 0x55c59913fb50 # | |setter = function: 0x55c599149a70 # |{2} PrivateDevices # | |getter = function: 0x55c599321cf0 # | |setter = function: 0x55c599321ed0 # |{2} RestartKillSignal # | |getter = function: 0x55c598efddb0 # | |setter = function: 0x55c598efdfc0 # |{2} RuntimeDirectoryPreserve # | |getter = function: 0x55c598f33290 # | |setter = function: 0x55c598f33470 # |{2} AmbientCapabilities # | |getter = function: 0x55c599075d60 # | |setter = function: 0x55c5991bfee0 # |{2} PAMName # | |getter = function: 0x55c599080150 # | |setter = function: 0x55c598fff620 # |{2} IPAddressAllow # | |getter = function: 0x55c59907a320 # | |setter = function: 0x55c598ff6570 # |{2} OOMScoreAdjust # | |getter = function: 0x55c59915b4b0 # | |setter = function: 0x55c59915c270 # |{2} MemoryMin # | |getter = function: 0x55c598ebde00 # | |setter = function: 0x55c598fe9fa0 # |{2} WorkingDirectory # | |getter = function: 0x55c59913ca30 # | |setter = function: 0x55c59913dbd0 # |{2} LogsDirectory # | |getter = function: 0x55c59907ab40 # | |setter = function: 0x55c59907ad50 # |{2} TimerSlackNSec # | |getter = function: 0x55c59917e430 # | |setter = function: 0x55c5991811e0 # |{2} RequisiteOf # | |getter = function: 0x55c5990b9220 # | |setter = function: 0x55c5990b9430 # |{2} MemoryLimit # | |getter = function: 0x55c599173ca0 # | |setter = function: 0x55c599131c90 # |{2} UtmpIdentifier # | |getter = function: 0x55c599319660 # | |setter = function: 0x55c599319840 # |{2} ConsistsOf # | |getter = function: 0x55c5990ba150 # | |setter = function: 0x55c5990ba360 # |{2} LimitSIGPENDINGSoft # | |getter = function: 0x55c599120b70 # | |setter = function: 0x55c599121d30 # |{2} ProtectClock # | |getter = function: 0x55c599320550 # | |setter = function: 0x55c599320730 # |{2} LimitMEMLOCKSoft # | |getter = function: 0x55c599116830 # | |setter = function: 0x55c5991179f0 # |{2} _Restart # | |getter = function: 0x55c599107f90 # | |setter = function: 0x55c5992fc9a0 # |{2} CollectMode # | |getter = function: 0x55c59908f580 # | |setter = function: 0x55c59908f790 # |{2} Wants # | |getter = function: 0x55c5990b7de0 # | |setter = function: 0x55c5990b7ff0 # |{2} SuccessActionExitStatus # | |getter = function: 0x55c59908e650 # | |setter = function: 0x55c59908e860 # |{2} StartupIOWeight # | |getter = function: 0x55c5991805a0 # | |setter = function: 0x55c5991af8d0 # |{2} RestrictAddressFamilies # | |getter = function: 0x55c598e48780 # | |setter = function: 0x55c598f32f90 # |{2} ReadWritePaths # | |getter = function: 0x55c598f988f0 # | |setter = function: 0x55c598f98ad0 # |{2} LogLevelMax # | |getter = function: 0x55c598f79580 # | |setter = function: 0x55c59931aec0 # |{2} ExecMainPID # | |getter = function: 0x55c5990ffef0 # | |setter = function: 0x55c5991011e0 # |{2} RestrictNamespaces # | |getter = function: 0x55c599000400 # | |setter = function: 0x55c599000610 # |{2} WatchdogUSec # | |getter = function: 0x55c599146bc0 # | |setter = function: 0x55c598fe6900 # |{2} IODeviceLatencyTargetUSec # | |getter = function: 0x55c59911ba40 # | |setter = function: 0x55c59912bb60 # |{2} LimitMSGQUEUESoft # | |getter = function: 0x55c599125730 # | |setter = function: 0x55c599127230 # |{2} EnvironmentFiles # | |getter = function: 0x55c5991a4770 # | |setter = function: 0x55c5991a5940 # |{2} StartLimitAction # | |getter = function: 0x55c59908d210 # | |setter = function: 0x55c59908d420 # |{2} InactiveEnterTimestampMonotonic # | |getter = function: 0x55c599082b00 # | |setter = function: 0x55c599082d10 # |{2} StartLimitIntervalUSec # | |getter = function: 0x55c59908c7f0 # | |setter = function: 0x55c59908ca00 # |{2} NotifyAccess # | |getter = function: 0x55c59919b080 # | |setter = function: 0x55c5991b3230 # |{2} AssertResult # | |getter = function: 0x55c599089550 # | |setter = function: 0x55c599089760 # |{2} Transient # | |getter = function: 0x55c59908bdd0 # | |setter = function: 0x55c59908bfe0 # |{2} LimitNICE # | |getter = function: 0x55c599128ab0 # | |setter = function: 0x55c599129c60 # |{2} LoadError # | |getter = function: 0x55c59908b8c0 # | |setter = function: 0x55c59908bad0 # |{2} SubState # | |getter = function: 0x55c599008bc0 # | |setter = function: 0x55c599008dd0 # |{2} NUMAMask # | |getter = function: 0x55c59912ff80 # | |setter = function: 0x55c59917d130 # |{2} ProtectControlGroups # | |getter = function: 0x55c5990795d0 # | |setter = function: 0x55c5990797b0 # |{2} Conditions # | |getter = function: 0x55c59908aea0 # | |setter = function: 0x55c59908b0b0 # |{2} AssertTimestampMonotonic # | |getter = function: 0x55c59908a990 # | |setter = function: 0x55c59908aba0 # |{2} ActiveExitTimestamp # | |getter = function: 0x55c59900c880 # | |setter = function: 0x55c59900ca90 # |{2} DefaultMemoryLow # | |getter = function: 0x55c5990f6c60 # | |setter = function: 0x55c599123000 # |{2} LimitRTPRIO # | |getter = function: 0x55c59912f620 # | |setter = function: 0x55c59910c6d0 # |{2} CacheDirectory # | |getter = function: 0x55c5990041c0 # | |setter = function: 0x55c5990043d0 # |{2} CPUSchedulingResetOnFork # | |getter = function: 0x55c5991824e0 # | |setter = function: 0x55c599182aa0 # |{2} NeedDaemonReload # | |getter = function: 0x55c5990876f0 # | |setter = function: 0x55c599087900 # |{2} NonBlocking # | |getter = function: 0x55c5990bd0e0 # | |setter = function: 0x55c5990bcee0 # |{2} DelegateControllers # | |getter = function: 0x55c5991b7f90 # | |setter = function: 0x55c5991bc630 # |{2} ProtectProc # | |getter = function: 0x55c5993315b0 # | |setter = function: 0x55c5993317c0 # |{2} ConflictedBy # | |getter = function: 0x55c5990bab70 # | |setter = function: 0x55c5990bad80 # |{2} IgnoreSIGPIPE # | |getter = function: 0x55c59902e5b0 # | |setter = function: 0x55c59902e790 # |{2} ProtectHome # | |getter = function: 0x55c598f2d880 # | |setter = function: 0x55c598f2da60 # |{2} Perpetual # | |getter = function: 0x55c59908c2e0 # | |setter = function: 0x55c59908c4f0 # |{2} ManagedOOMMemoryPressureLimitPercent # | |getter = function: 0x55c59919f2f0 # | |setter = function: 0x55c59919f8b0 # |{2} LimitLOCKS # | |getter = function: 0x55c599119670 # | |setter = function: 0x55c59911a410 # |{2} IPIngressFilterPath # | |getter = function: 0x55c599193940 # | |setter = function: 0x55c599195710 # |{2} JobTimeoutRebootArgument # | |getter = function: 0x55c599088b30 # | |setter = function: 0x55c599088d40 # |{2} JobTimeoutAction # | |getter = function: 0x55c599088620 # | |setter = function: 0x55c599088830 # |{2} SyslogPriority # | |getter = function: 0x55c5990967c0 # | |setter = function: 0x55c599081bb0 # |{2} BindsTo # | |getter = function: 0x55c5990b82f0 # | |setter = function: 0x55c5990b8500 # |{2} CanIsolate # | |getter = function: 0x55c599083f40 # | |setter = function: 0x55c599084150 # |{2} LimitSIGPENDING # | |getter = function: 0x55c59911d910 # | |setter = function: 0x55c59911eef0 # |{2} IgnoreOnIsolate # | |getter = function: 0x55c5990871e0 # | |setter = function: 0x55c5990873f0 # |{2} DefaultDependencies # | |getter = function: 0x55c5990867c0 # | |setter = function: 0x55c5990869d0 # |{2} UnsetEnvironment # | |getter = function: 0x55c5991a9d20 # | |setter = function: 0x55c5991aaef0 # |{2} CoredumpFilter # | |getter = function: 0x55c59915e3c0 # | |setter = function: 0x55c59915f590 # |{2} LimitSTACK # | |getter = function: 0x55c5990ed630 # | |setter = function: 0x55c5990edc00 # |{2} AllowIsolate # | |getter = function: 0x55c5990862b0 # | |setter = function: 0x55c5990864c0 # |{2} LimitRTTIMESoft # | |getter = function: 0x55c599138830 # | |setter = function: 0x55c59913a880 # |{2} RefuseManualStop # | |getter = function: 0x55c599085da0 # | |setter = function: 0x55c599085fb0 # |{2} CanFreeze # | |getter = function: 0x55c599084960 # | |setter = function: 0x55c599084b70 # |{2} CanReload # | |getter = function: 0x55c599083a30 # | |setter = function: 0x55c599083c40 # |{2} ExecMainExitTimestampMonotonic # | |getter = function: 0x55c5990fcb80 # | |setter = function: 0x55c5990fde40 # |{2} CanStop # | |getter = function: 0x55c599083520 # | |setter = function: 0x55c599083730 # |{2} CanStart # | |getter = function: 0x55c599083010 # | |setter = function: 0x55c599083220 # |{2} LimitRSSSoft # | |getter = function: 0x55c5990fe0d0 # | |setter = function: 0x55c5990fee70 # |{2} ActiveExitTimestampMonotonic # | |getter = function: 0x55c59900cd90 # | |setter = function: 0x55c5990822f0 # |{2} ExecStopEx # | |getter = function: 0x55c59913f1a0 # | |setter = function: 0x55c599140e70 # |{2} AssertTimestamp # | |getter = function: 0x55c59908a480 # | |setter = function: 0x55c59908a690 # |{2} IPEgressPackets # | |getter = function: 0x55c59917e140 # | |setter = function: 0x55c59917f930 # |{2} ExecMainStatus # | |getter = function: 0x55c599107a40 # | |setter = function: 0x55c599109bd0 # |{2} Documentation # | |getter = function: 0x55c599007270 # | |setter = function: 0x55c599007480 # |{2} LimitNOFILESoft # | |getter = function: 0x55c5991035b0 # | |setter = function: 0x55c599104770 # |{2} NoNewPrivileges # | |getter = function: 0x55c598f37580 # | |setter = function: 0x55c598f37760 # |{2} LimitNPROC # | |getter = function: 0x55c5990f9f00 # | |setter = function: 0x55c59910db70 # |{2} ConditionTimestamp # | |getter = function: 0x55c599089a60 # | |setter = function: 0x55c599089c70 # |{2} Environment # | |getter = function: 0x55c5991a1980 # | |setter = function: 0x55c5991a2b40 # |{2} IOSchedulingPriority # | |getter = function: 0x55c599166d20 # | |setter = function: 0x55c599168480 # |{2} CapabilityBoundingSet # | |getter = function: 0x55c598ffd6b0 # | |setter = function: 0x55c598ffee70 # |{2} TriggeredBy # | |getter = function: 0x55c599005920 # | |setter = function: 0x55c599005b30 # |{2} Id # | |getter = function: 0x55c5990c46d0 # | |setter = function: 0x55c5990c4910 # |{2} UnitFilePreset # | |getter = function: 0x55c59900a510 # | |setter = function: 0x55c59900a720 # |{2} InactiveExitTimestamp # | |getter = function: 0x55c59900b440 # | |setter = function: 0x55c59900b650 # |{2} IOReadBandwidthMax # | |getter = function: 0x55c598ed6aa0 # | |setter = function: 0x55c599094cc0 # |{2} StateChangeTimestamp # | |getter = function: 0x55c59900aa20 # | |setter = function: 0x55c59900ac30 # |{2} DropInPaths # | |getter = function: 0x55c599009af0 # | |setter = function: 0x55c599009d00 # |{2} ConditionResult # | |getter = function: 0x55c599089040 # | |setter = function: 0x55c599089250 # |{2} MemoryCurrent # | |getter = function: 0x55c599157c30 # | |setter = function: 0x55c5991598a0 # |{2} ActiveState # | |getter = function: 0x55c5990081a0 # | |setter = function: 0x55c5990083b0 # |{2} LoadState # | |getter = function: 0x55c599007c90 # | |setter = function: 0x55c599007ea0 # |{2} Description # | |getter = function: 0x55c599007780 # | |setter = function: 0x55c599007990 # |{2} FragmentPath # | |getter = function: 0x55c5990090d0 # | |setter = function: 0x55c5990092e0 # |{2} ActiveEnterTimestamp # | |getter = function: 0x55c59900be60 # | |setter = function: 0x55c59900c070 # |{2} Triggers # | |getter = function: 0x55c599005410 # | |setter = function: 0x55c599005620 # |{2} OnFailure # | |getter = function: 0x55c5990bbaa0 # | |setter = function: 0x55c599005110 # |{2} ManagedOOMMemoryPressure # | |getter = function: 0x55c59919c4d0 # | |setter = function: 0x55c59919d290 # |{2} After # | |getter = function: 0x55c5990bb590 # | |setter = function: 0x55c5990bb7a0 # |{2} Before # | |getter = function: 0x55c5990bb080 # | |setter = function: 0x55c5990bb290 # |{2} WantedBy # | |getter = function: 0x55c5990b9730 # | |setter = function: 0x55c5990b9940 # |{2} RequiredBy # | |getter = function: 0x55c5990b8d10 # | |setter = function: 0x55c5990b8f20 # |{2} PartOf # | |getter = function: 0x55c5990b8800 # | |setter = function: 0x55c5990b8a10 # |{2} MountAPIVFS # | |getter = function: 0x55c599330bc0 # | |setter = function: 0x55c599330da0 # |{2} LimitRTPRIOSoft # | |getter = function: 0x55c599132b20 # | |setter = function: 0x55c599134e50 # |{2} TasksCurrent # | |getter = function: 0x55c59916a370 # | |setter = function: 0x55c59916c910 # |{2} RemainAfterExit # | |getter = function: 0x55c599185940 # | |setter = function: 0x55c599187680 # |{2} Following # | |getter = function: 0x55c5990c5120 # | |setter = function: 0x55c5990c5330 # |{2} WatchdogSignal # | |getter = function: 0x55c59921f9c0 # | |setter = function: 0x55c59921fbd0 # |{2} SendSIGHUP # | |getter = function: 0x55c59921f4b0 # | |setter = function: 0x55c59921f6c0 # |{2} LogRateLimitBurst # | |getter = function: 0x55c598f03c90 # | |setter = function: 0x55c598f978a0 # |{2} IPAccounting # | |getter = function: 0x55c598fdac70 # | |setter = function: 0x55c5991b0460 # |{2} SendSIGKILL # | |getter = function: 0x55c59921efa0 # | |setter = function: 0x55c59921f1b0 # |{2} AllowedMemoryNodes # | |getter = function: 0x55c599156cd0 # | |setter = function: 0x55c59915d680 # |{2} KillMode # | |getter = function: 0x55c598efd3c0 # | |setter = function: 0x55c598efd5a0 # |{2} IOWriteBytes # | |getter = function: 0x55c5990fab10 # | |setter = function: 0x55c599156f70 # |{2} ProcSubset # | |getter = function: 0x55c599314670 # | |setter = function: 0x55c599314880 # |{2} ConditionTimestampMonotonic # | |getter = function: 0x55c599089f70 # | |setter = function: 0x55c59908a180 # |{2} TemporaryFileSystem # | |getter = function: 0x55c599002a40 # | |setter = function: 0x55c599002c50 # |{2} SystemCallFilter # | |getter = function: 0x55c598f37a60 # | |setter = function: 0x55c598f37c40 # |{2} IOReadIOPSMax # | |getter = function: 0x55c599107560 # | |setter = function: 0x55c59910b220 # |{2} RootImageOptions # | |getter = function: 0x55c5991454e0 # | |setter = function: 0x55c599146310 # |{2} BindReadOnlyPaths # | |getter = function: 0x55c599002530 # | |setter = function: 0x55c599002740 # |{2} NUMAPolicy # | |getter = function: 0x55c599174ec0 # | |setter = function: 0x55c599175490 # |{2} SuccessAction # | |getter = function: 0x55c59908e140 # | |setter = function: 0x55c59908e350 # |{2} RestrictRealtime # | |getter = function: 0x55c598e9e590 # | |setter = function: 0x55c598e9e7a0 # |{2} IOWriteBandwidthMax # | |getter = function: 0x55c5990e92b0 # | |setter = function: 0x55c5990efea0 # |{2} ExecMainExitTimestamp # | |getter = function: 0x55c5990f9280 # | |setter = function: 0x55c5990fa960 # |{2} ReadOnlyPaths # | |getter = function: 0x55c59931db30 # | |setter = function: 0x55c59931dd10 # |{2} TimeoutCleanUSec # | |getter = function: 0x55c599186890 # | |setter = function: 0x55c599186aa0 # |{2} MemoryLow # | |getter = function: 0x55c5990f38a0 # | |setter = function: 0x55c5990fdae0 # |{2} MemoryHigh # | |getter = function: 0x55c599105290 # | |setter = function: 0x55c599125200 # |{2} ProtectSystem # | |getter = function: 0x55c5993240f0 # | |setter = function: 0x55c5993242d0 # |{2} ConfigurationDirectory # | |getter = function: 0x55c5991863b0 # | |setter = function: 0x55c599186590 # |{2} IOSchedulingClass # | |getter = function: 0x55c599165080 # | |setter = function: 0x55c599165e50 # |{2} LimitRSS # | |getter = function: 0x55c5990f0420 # | |setter = function: 0x55c5990fbb20 # |{2} PrivateUsers # | |getter = function: 0x55c599077da0 # | |setter = function: 0x55c599077f80 # |{2} RootHash # | |getter = function: 0x55c5991475f0 # | |setter = function: 0x55c599147bc0 # |{2} CPUQuotaPeriodUSec # | |getter = function: 0x55c599141ea0 # | |setter = function: 0x55c599148ec0 # |{2} NRestarts # | |getter = function: 0x55c59907b310 # | |setter = function: 0x55c5990cac60 # |{2} TTYVHangup # | |getter = function: 0x55c599332b10 # | |setter = function: 0x55c598fb0d60 # |{2} MemoryMax # | |getter = function: 0x55c599135da0 # | |setter = function: 0x55c599139180 # |{2} InactiveExitTimestampMonotonic # | |getter = function: 0x55c59900b950 # | |setter = function: 0x55c59900bb60 # |{2} RestartPreventExitStatus # | |getter = function: 0x55c5991ba080 # | |setter = function: 0x55c598eae3d0 # |{2} CacheDirectoryMode # | |getter = function: 0x55c599313420 # | |setter = function: 0x55c5993135d0 # |{2} StateDirectory # | |getter = function: 0x55c599312f40 # | |setter = function: 0x55c599313120 # |{2} PrivateNetwork # | |getter = function: 0x55c5990788a0 # | |setter = function: 0x55c599078a80 # |{2} LimitMEMLOCK # | |getter = function: 0x55c599113630 # | |setter = function: 0x55c599114960 # |{2} ExecCondition # | |getter = function: 0x55c59910d900 # | |setter = function: 0x55c599110410 # |{2} LockPersonality # | |getter = function: 0x55c598e482a0 # | |setter = function: 0x55c598e48480 # |{2} EffectiveCPUs # | |getter = function: 0x55c599161440 # | |setter = function: 0x55c599162ca0 # |{2} SystemCallLog # | |getter = function: 0x55c598eb75d0 # | |setter = function: 0x55c598eb77b0 # |{2} SystemCallErrorNumber # | |getter = function: 0x55c599190780 # | |setter = function: 0x55c598eb72d0 # |{2} CPUSchedulingPriority # | |getter = function: 0x55c59916c5a0 # | |setter = function: 0x55c59916d4e0 # |{2} ExecStartPost # | |getter = function: 0x55c599129a80 # | |setter = function: 0x55c59912ae50 # |{2} CPUWeight # | |getter = function: 0x55c5990e99b0 # | |setter = function: 0x55c5990ee9b0 # |{2} UtmpMode # | |getter = function: 0x55c5990805e0 # | |setter = function: 0x55c5990807c0 # |{2} SmackProcessLabel # | |getter = function: 0x55c598fa8f00 # | |setter = function: 0x55c59902e2b0 # |{2} AppArmorProfile # | |getter = function: 0x55c5990bc2f0 # | |setter = function: 0x55c598fa8c00 # |{2} KillSignal # | |getter = function: 0x55c598efd8a0 # | |setter = function: 0x55c598efdab0 # |{2} EffectiveMemoryNodes # | |getter = function: 0x55c599164e10 # | |setter = function: 0x55c599166640 # |{2} USBFunctionStrings # | |getter = function: 0x55c5991b2ca0 # | |setter = function: 0x55c5991b7ce0 # |{2} BlockIODeviceWeight # | |getter = function: 0x55c59916ea20 # | |setter = function: 0x55c5991730d0 # |{2} InaccessiblePaths # | |getter = function: 0x55c598f826a0 # | |setter = function: 0x55c598f82880 # |{2} StatusText # | |getter = function: 0x55c5991941d0 # | |setter = function: 0x55c599195f80 # |{2} BlockIOReadBandwidth # | |getter = function: 0x55c59917e6e0 # | |setter = function: 0x55c599182d50 # |{2} RootHashPath # | |getter = function: 0x55c599149800 # | |setter = function: 0x55c59914bc60 # |{2} Group # | |getter = function: 0x55c598f91d30 # | |setter = function: 0x55c5990925b0 # |{2} SupplementaryGroups # | |getter = function: 0x55c598f3c3c0 # | |setter = function: 0x55c59907fe50 # |{2} IODeviceWeight # | |getter = function: 0x55c5991bb0a0 # | |setter = function: 0x55c5991bd1e0 # |{2} ProtectKernelLogs # | |getter = function: 0x55c598efff10 # | |setter = function: 0x55c598f000f0 # |{2} MainPID # | |getter = function: 0x55c598ec5190 # | |setter = function: 0x55c5992fc1e0 # |{2} LimitFSIZESoft # | |getter = function: 0x55c5991bd940 # | |setter = function: 0x55c5991be700 # |{2} SyslogFacility # | |getter = function: 0x55c598ffe1b0 # | |setter = function: 0x55c598ffc770 # |{2} ProtectKernelTunables # | |getter = function: 0x55c598f017a0 # | |setter = function: 0x55c598f01980 # |{2} OOMPolicy # | |getter = function: 0x55c5990eb7f0 # | |setter = function: 0x55c5990ecac0 # |{2} ExecStopPost # | |getter = function: 0x55c599144250 # | |setter = function: 0x55c599145790 # |{2} IOWeight # | |getter = function: 0x55c599172110 # | |setter = function: 0x55c5991304e0 # |{2} MountFlags # | |getter = function: 0x55c59931b620 # | |setter = function: 0x55c59931b800 # |{2} BusName # | |getter = function: 0x55c598fdec30 # | |setter = function: 0x55c598f6cf10 # |{2} Nice # | |getter = function: 0x55c599161730 # | |setter = function: 0x55c599162e20 # |{2} ControlGroup # | |getter = function: 0x55c5991517f0 # | |setter = function: 0x55c599154910 # |{2} StandardInputData # | |getter = function: 0x55c598ed6330 # | |setter = function: 0x55c598fb4a70 # |{2} ReloadResult # | |getter = function: 0x55c5991a4a00 # | |setter = function: 0x55c5991a6260 # |{2} SetCredential # | |getter = function: 0x55c598f85110 # | |setter = function: 0x55c598f852f0 # |{2} SyslogLevelPrefix # | |getter = function: 0x55c59911e1e0 # | |setter = function: 0x55c599144d60 # |{2} TTYPath # | |getter = function: 0x55c598eddc50 # | |setter = function: 0x55c599091ee0 # |{2} TasksAccounting # | |getter = function: 0x55c598f72b30 # | |setter = function: 0x55c598f72450 # |{2} LogExtraFields # | |getter = function: 0x55c598f97d30 # | |setter = function: 0x55c599316de0 # |{2} Delegate # | |getter = function: 0x55c5991b1700 # | |setter = function: 0x55c5991b6cb0 # |{2} SyslogLevel # | |getter = function: 0x55c598f90960 # | |setter = function: 0x55c598ffdca0 # |{2} TTYReset # | |getter = function: 0x55c598f974d0 # | |setter = function: 0x55c598ff7820 # |{2} TimeoutStartFailureMode # | |getter = function: 0x55c598fb8930 # | |setter = function: 0x55c598fb8400 # |{2} StandardOutput # | |getter = function: 0x55c599091ae0 # | |setter = function: 0x55c5990916e0 # |{2} ManagedOOMSwap # | |getter = function: 0x55c599199f90 # | |setter = function: 0x55c59919b250 # |{2} Type # | |getter = function: 0x55c598ee6240 # | |setter = function: 0x55c5990fcf90 # |{2} Asserts # | |getter = function: 0x55c59908b3b0 # | |setter = function: 0x55c59908b5c0 # |{2} CPUSchedulingPolicy # | |getter = function: 0x55c599169790 # | |setter = function: 0x55c59916b290 # |{2} RestartForceExitStatus # | |getter = function: 0x55c598fb9c80 # | |setter = function: 0x55c598f6f300 # |{2} Requisite # | |getter = function: 0x55c5990c5b40 # | |setter = function: 0x55c5990b7ae0 # |{2} ExecStartPre # | |getter = function: 0x55c599118240 # | |setter = function: 0x55c599119d20 # |{2} StartupCPUWeight # | |getter = function: 0x55c5990f80d0 # | |setter = function: 0x55c599109930 # |{2} RootHashSignaturePath # | |getter = function: 0x55c599151660 # | |setter = function: 0x55c599153380 # |{2} ExecReloadEx # | |getter = function: 0x55c599136540 # | |setter = function: 0x55c599138560 # |{2} LimitRTTIME # | |getter = function: 0x55c599136270 # | |setter = function: 0x55c599137570 # |{2} IOAccounting # | |getter = function: 0x55c599163e10 # | |setter = function: 0x55c59916a130 # |{2} TimeoutStopFailureMode # | |getter = function: 0x55c598fa4730 # | |setter = function: 0x55c598f4de40 # |{2} LimitLOCKSSoft # | |getter = function: 0x55c59911c460 # | |setter = function: 0x55c59911ca30 # |{2} RequiresMountsFor # | |getter = function: 0x55c599006d60 # | |setter = function: 0x55c599006f70 # |{2} PropagatesReloadTo # | |getter = function: 0x55c599005e30 # | |setter = function: 0x55c599006040 # |{2} ExecMainStartTimestampMonotonic # | |getter = function: 0x55c5990f4a10 # | |setter = function: 0x55c5990f5cc0 # |{2} LimitASSoft # | |getter = function: 0x55c599108b10 # | |setter = function: 0x55c599109e30 # |{2} NetworkNamespacePath # | |getter = function: 0x55c599315090 # | |setter = function: 0x55c5993152a0 # |{2} ControlPID # | |getter = function: 0x55c598efc740 # | |setter = function: 0x55c5990bcb20 # |{2} ExecReload # | |getter = function: 0x55c5991335a0 # | |setter = function: 0x55c599134ca0 # |{2} UID # | |getter = function: 0x55c5991ba2e0 # | |setter = function: 0x55c5991bc8d0 # |{2} CPUAffinity # | |getter = function: 0x55c59916e7b0 # | |setter = function: 0x55c59916f9a0 # |{2} ExecStart # | |getter = function: 0x55c599122060 # | |setter = function: 0x55c599123350 # |{2} StartupCPUShares # | |getter = function: 0x55c59911b290 # | |setter = function: 0x55c5991213c0 #_proxy = lgi.obj 0x55c5991c1070:Gio.DBusProxy(GDBusProxy) #PingAsync = function: 0x55c5991889e0 #Get = function: 0x55c59920cdc0 ```
Thanks for the feedback @AntonPetrochenko. If you don't mind, it'd be great to know whether the test suite passes on your machine as there's a test that explicitly looks for _Restart
.
It would be useful to know what version of Lua you are using too because at the moment I cannot run these tests in CI.
Thank you!
Thanks again for reporting this, I will close the issue once I cut a release.
Fixed in v10.0.3
Happened to me when I asked systemd1 for a unit object
This example fails with
Property 'Restart' is not writable
right in the proxy constructor.I patched this for myself by namespacing properties with
prop_
, but can't PR that due to obvious compatibility issues