Bug 60284
| Summary: | warning: undefining the allocator of T_DATA class Memcached::Connection | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | Vladislav Glinkin <glinkinvd> |
| Component: | gem-memcached | Assignee: | majioa <majioa> |
| Status: | RESOLVED WONTFIX | QA Contact: | qa-sisyphus |
| Severity: | normal | ||
| Priority: | P5 | CC: | 3aHyga, admsasha, cas, majioa, mike, nbr, pav, rider, thatman |
| Version: | unstable | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
warning не являяется ошибкой. болѣе того, не отнсится къ этому пакету (Ответ для Малъ Скрылевъ на комментарий #1) > warning не являяется ошибкой. болѣе того, не отнсится къ этому пакету Да, warning не является фатальной ошибкой, но к `gem-memcached` он относится напрямую. Ruby выдаёт его, когда C-extension создаёт `T_DATA`, не переопределив или не удалив allocator класса. Эта проверка специально предназначена для выявления таких ошибок в C extensions: [Ruby Bug #18007](https://bugs.ruby-lang.org/issues/18007?utm_source=chatgpt.com) Сам `memcached` использует C-wrapper, сгенерированный SWIG: upstream прямо указывает, что библиотека «wraps the pure-C libmemcached client via SWIG». Более того, в самом SWIG исправлялась именно эта проблема: `[Ruby] #2527 Fix "undefining the allocator of T_DATA" warning seen with Ruby 3.2.` https://github.com/swig/swig/pull/2527 это рекомендація только для разработчиковъ upstream-а,чтобы они дѣлали свой кодъ правильно, такъ что ошибкой не является. Я открылъ имъ запросъ: https://github.com/arthurnn/memcached/issues/221 У насъ это отдѣльно отъ upstream исправляться не планируется. |

Description
Vladislav Glinkin 2026-08-26 13:50:29 MSKОписание проблемы: Начиная с Ruby 3.2 был изменён механизм работы с объектами типа T_DATA: Ruby начал выдавать предупреждение, если C-extension не переопределяет allocator для класса, использующего T_DATA. Версия пакета: gem-memcached-2.0.0.21-alt0.1 Предусловия: Установлен gem-memcached и запущен memcached.service на 127.0.0.1:11211 Шаги воспроизведения: 1) ``` $ cat > test.rb <<EOF require 'memcached' cache = Memcached::Client.new("localhost:11211") value = 'hello' cache.set 'test', value res = cache.get 'test' p res EOF ``` 2) `$ ruby test.rb` Фактический результат: ``` /usr/lib/ruby/gemie/gems/memcached-2.0.0.21/lib/memcached/client.rb:141: warning: undefining the allocator of T_DATA class Memcached::Connection "hello" ``` Ожидаемый результат: Отсутствие каких-либо предупреждений.