kgio RubyGem user+dev discussion/patches/pulls/bugs/help
 help / color / mirror / code / Atom feed
From: Eric Wong <normalperson@yhbt.net>
To: kgio@librelist.org
Subject: Re: kgio_ext.so: [BUG] constant not a symbol or string
Date: Fri, 27 Dec 2013 07:41:29 +0000	[thread overview]
Message-ID: <20131227074129.GA6381@dcvr.yhbt.net> (raw)
In-Reply-To: CA+QCWdJuQ=Sm_Lc_fiX2rEtKCA7FsXzjuYZiJXT3bnGjL+Eksw@mail.gmail.com

Christopher Rigor <crigor@gmail.com> wrote:
> When I start sidekiq from the command line, it runs correctly. When it is
> started from monit, I get kgio_ext.so: [BUG] constant not a symbol or
> string.

Can you verify this is the same instance of sidekiq and loading the same
libraries from the same paths?  Also, are you using RVM or rbenv or
similar?  Can you reproduce the issue without those?

> I'm using kgio 2.8.0 and ruby 2.0.0 p353.
> 
> I know monit doesn't set some environment variables but I didn't expect to
> encounter an issue with Ruby internals if an environment variable is
> missing.
> 
> Based on the backtrace "kgio-2.8.0/lib/kgio_ext.so(init_kgio_tryopen+0x1a9)
> [0x7fe93d120359]" I found the code where the error came from.
> http://repo.or.cz/w/kgio.git/blob/8be51237720fd18cb45188f29c717bbac0ca1964:/ext/kgio/tryopen.c#l173
> 
> 1. Is this an error on kgio?

Unlikely :>

> 2. Did I give enough information to pinpoint the issue?

Not yet, but we'll get there.

> 3. How can I debug this? What tools do you use for this kind of problems?

I suspect something is mixed up with the installation/loading via monit.
Most likely, the kgio you're loading is for a different version of Ruby
than what you're running.  Or (unlikely) something is monkeypatching
Errno.constants to return bogus output...

Since you're running Ruby 2.0, you should see an array of symbols
(and nothing else) from the following command:

	ruby -e 'p Errno.constants'

You can also try dumping Errno.constants at various places in the
sidekiq code.  Sorry, I'm not familiar with sidekiq; but hopefully
it's not mangling Errno.constants output under monit somehow.

Also, the following patch should give you a little more debug output:

--- a/ext/kgio/tryopen.c
+++ b/ext/kgio/tryopen.c
@@ -173,7 +173,12 @@ void init_kgio_tryopen(void)
 		switch (TYPE(err)) {
 		case T_SYMBOL: const_id = SYM2ID(err); break;
 		case T_STRING: const_id = rb_intern(RSTRING_PTR(err)); break;
-		default: rb_bug("constant not a symbol or string");
+		default: {
+			VALUE i = rb_inspect(err);
+			const char *s = StringValueCStr(i);
+
+			rb_bug("constant not a symbol or string: %s", s);
+			}
 		}
 
 		error = rb_const_get(rb_mErrno, const_id);


  reply	other threads:[~2013-12-27  7:41 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-27  6:23 kgio_ext.so: [BUG] constant not a symbol or string Christopher Rigor
2013-12-27  7:41 ` Eric Wong [this message]
2014-01-16 23:54 ` Eric Wong
2014-02-04  2:38   ` Christopher Rigor
2014-02-04  3:04     ` Eric Wong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://yhbt.net/kgio/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20131227074129.GA6381@dcvr.yhbt.net \
    --to=normalperson@yhbt.net \
    --cc=kgio@librelist.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://yhbt.net/kgio.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).