Версия пакета: gem-fcgi-0.9.2.2-alt1 Шаги воспроизведения: 1) `# ruby -rsocket -rfcgi -e 's=TCPServer.new("127.0.0.1",0); p=s.addr[1]; pid=fork{STDIN.reopen(s);s.close;r=FCGI.accept;r.finish}; c=TCPSocket.new("127.0.0.1",p); rec=->(t,d=""){n=d.bytesize;[1,t,0,1,n>>8,n&255,0,0].pack("C8")+d}; c.write(rec[1,[0,1,0,0,0,0,0,0].pack("C8")]+rec[4]+rec[5]); c.close; Process.wait(pid)'` Фактический результат: ``` -e:1: warning: undefining the allocator of T_DATA class FCGI -e:1: warning: undefining the allocator of T_DATA class FCGI::Stream ``` Ожидаемый результат: Отсутствие предупреждений.
warning не являяется ошибкой. болѣе того, не отнсится къ этому пакету
(Ответ для Малъ Скрылевъ на комментарий #1) > warning не являяется ошибкой. болѣе того, не отнсится къ этому пакету Да, это warning, а не фатальная ошибка. Но к `gem-fcgi` он относится напрямую. Ruby выдаёт этот warning, когда C-расширение создаёт `T_DATA`, не переопределив и не удалив allocator класса. Это прямо описано в Ruby Bug #18007: https://bugs.ruby-lang.org/issues/18007 Документация Ruby также требует для таких классов использовать `rb_define_alloc_func()` или `rb_undef_alloc_func()`: https://docs.ruby-lang.org/en/master/extension_rdoc.html В `fcgi` объекты `FCGI` и `FCGI::Stream` создаются через `Data_Make_Struct()`, но allocator для этих классов не удаляется: https://github.com/alphallc/ruby-fcgi-ng/blob/master/ext/fcgi/fcgi.c Минимальное исправление: ``` rb_undef_alloc_func(cFCGI); rb_undef_alloc_func(cFCGIStream); ```
это рекомендація только для разработчиковъ upstream-а,чтобы они дѣлали свой кодъ правильно, такъ что ошибкой не является. Я открылъ имъ запросъ: https://github.com/alphallc/ruby-fcgi-ng/issues/12 У насъ это отдѣльно отъ upstream исправляться не планируется, въ данномъ случаѣ я сошлюсь на мнѣніе @rider: #41650 это ограниченіе возможностей исходнаго кода, а не ошибка пакета.