01:55
lucasb has quit [Quit: Connection closed for inactivity]
03:23
sagax has quit [Quit: Konversation terminated!]
03:47
slyphon has joined #jruby
03:49
slyphon has quit [Client Quit]
04:31
_whitelogger has joined #jruby
05:06
sagax has joined #jruby
05:06
<
headius[m] >
How does it modify code?
05:06
<
headius[m] >
I did not see that in the repo
05:08
<
rg_3[m] >
headius: it can "modify" code because when the tracer thread is suspended you can call `binding.eval('some_method_arg = 2')` then resume the tracer again with the altered value
05:10
<
headius[m] >
Oh I see
05:11
<
headius[m] >
I can probably add this per thread tracing in a couple minutes but I'm in transit
05:11
<
rg_3[m] >
well, looks like, from my hack, there's problems :)
05:11
<
headius[m] >
It's a little silt that it isn't there already
05:11
<
rg_3[m] >
i'm probably getting away with it on crubys concurrency model i guess
05:12
<
headius[m] >
Ugh redcarpet
05:12
<
headius[m] >
Had JRuby support until a couple years ago and then dropped us
05:12
<
headius[m] >
That's not a terrible hack
05:13
<
rg_3[m] >
i'm using that because it understands github flavored markdown & integrates with yard basically adds github flavored makrdown support to yard
05:14
<
headius[m] >
Yeah nothing wrong with the library
05:14
<
headius[m] >
Second class citizen problems
05:15
<
rg_3[m] >
yeah, it's unfortunate
05:15
<
rg_3[m] >
but i think there's a nicer way to do that than i did, using bundler `platform` option
05:16
<
rg_3[m] >
the error i get back from jruby is pretty odd
05:16
<
rg_3[m] >
that line, 105, is Thread.new do
05:16
<
rg_3[m] >
i guess whatever i'm doing is probably unsafe on the jvm?
05:21
<
headius[m] >
no that's just a bug
05:21
<
headius[m] >
file that
05:21
<
headius[m] >
that should definitely not happen
05:27
<
headius[m] >
woot, reproduces
05:27
<
headius[m] >
yeah tracing weirdness
05:28
<
headius[m] >
oh neat
05:28
<
headius[m] >
this is some side effect of us trying to re-raise the exception in main thread I think
05:29
<
headius[m] >
yeah I might play with this on the plane tomorrow
05:30
<
rg_3[m] >
yeah, that code tries to raise on the main Thread under some scenarios
05:30
<
headius[m] >
that makes sense then
05:30
<
headius[m] >
ok yeah I bet I know
05:30
<
headius[m] >
it's trying to re-raise the exception from the thread to main
05:30
<
headius[m] >
but the thread has terminated and has no call stack anymore
05:31
<
headius[m] >
but the raise tries to trigger a :raise trace event, which captures binding... but there's no frame... soo....
05:31
<
headius[m] >
weird case
05:33
<
headius[m] >
yeah report_on_exception branch
05:35
<
headius[m] >
might be able to work around it by setting Thread.current.report_on_exception = false
05:35
<
rg_3[m] >
i was going to ask that
05:35
<
headius[m] >
it's a problem because it tries to print out the exception on the same thread... as it's dying
05:35
<
rg_3[m] >
is jruby breaking from the default there?
05:35
<
headius[m] >
well I mean we shouldn't break but that's why it's printing
05:36
<
rg_3[m] >
i mean, usually abort_on_exception is false?
05:36
<
headius[m] >
it is but report defaults to something true-ish now I think
05:36
<
headius[m] >
I requested the feature so I really should know but I don't remember what they settled on
05:37
<
headius[m] >
it's not off though
05:38
<
headius[m] >
hmm I'm not immediately sure how to fix this
05:38
<
headius[m] >
I think we need to print the exception using only internal code though
05:38
<
headius[m] >
which seems reasonable
05:42
<
rg_3[m] >
haha damn
05:42
<
rg_3[m] >
it's passing all my tests now
05:43
<
rg_3[m] >
oh well, almost, i mean some differences about "c-return" and "c_return" from set_trace_func
05:43
<
headius[m] >
that's not too surprising
05:43
<
headius[m] >
we have different things as "c" calls... some of ours are in ruby
05:43
<
rg_3[m] >
but most of the failures were caused by cases where i was still calling Thread#set_trace_func on jruby
05:44
<
headius[m] >
oh wait underscore?
05:44
<
headius[m] >
we should match that
05:44
<
rg_3[m] >
the failure is
05:44
<
rg_3[m] >
more interesting tho, there's a binding-related failure
05:45
<
rg_3[m] >
this fails :( which sucks
05:46
<
headius[m] >
so it's supposed to be c-return?
05:46
<
headius[m] >
we've had this code for like a decade
05:46
<
rg_3[m] >
yep, those are reported as c-return, c-call
05:46
<
rg_3[m] >
not sure about the others though
05:47
<
headius[m] >
roll for disbelief
05:47
<
headius[m] >
wow it is
05:47
<
rg_3[m] >
for sure, those specs pass pass on cruby
05:48
<
headius[m] >
I think it's literally just those two
05:48
<
headius[m] >
the others appear to be all underscores in CRuby source
05:48
<
rg_3[m] >
consistent -_-
05:49
<
rg_3[m] >
sadly the test that makes that project most useful fails, the one where code is altered
05:49
<
headius[m] >
I'm flabbergasted
05:50
<
rg_3[m] >
i would have been pretty surprised if it worked as i always assumed that project relied on MRI quirks
05:52
<
headius[m] >
give me your updated patch
05:52
<
headius[m] >
it's quirky but there's tests
05:52
<
headius[m] >
I'm just shocked that there's none to catch the dash vs underscore
05:53
<
headius[m] >
where did you disable exception reporting
05:54
<
rg_3[m] >
i just pushed
05:54
<
headius[m] >
I have a trivial patch for the dash/underscore thing, I just want to confirm
05:54
<
rg_3[m] >
i didn't have to disable reporting after fixing the other issue
05:55
<
rg_3[m] >
which was trying to call Thread#set_trace_func on jruby
05:55
<
rg_3[m] >
there's only 3 failures now, 2 for c-call / c-return and one binding-related one
05:56
<
rg_3[m] >
ruby --debug -S rspec spec/
05:56
<
rg_3[m] >
should do it
05:57
<
headius[m] >
I'm missing something because I still get the ArrayIndexOutOfBounds
05:58
<
rg_3[m] >
weird, the most recent commit should be 3f193aa643c7995f14a2fd3ae2a34691ae4032cc
05:59
<
headius[m] >
master?
05:59
<
rg_3[m] >
oh no sorry
05:59
<
rg_3[m] >
jruby branch
05:59
<
headius[m] >
ok I see
05:59
<
headius[m] >
one failure
06:00
<
headius[m] >
Failure/Error: expect(event.binding.eval('sum')).to eq(9)
06:00
<
headius[m] >
otherwise good
06:00
<
rg_3[m] >
yeah, but that is the worst failure
06:00
<
rg_3[m] >
it indicates that the change in the binding isn't seen
06:01
<
headius[m] >
I have my suspects
06:01
<
headius[m] >
but that's out of scope tonight
06:01
<
rg_3[m] >
thanks a lot for your help!
06:01
<
headius[m] >
if you can put that in a bug my friend enebo might see it
06:01
<
rg_3[m] >
sure, i'll whip up an issue in the morning with context
06:02
<
headius[m] >
cool, I'll look for it tomorrow... just flying
06:02
<
rg_3[m] >
np, thanks for all the help
06:25
_whitelogger has joined #jruby
13:58
lucasb has joined #jruby
17:36
nirvdrum has joined #jruby
18:19
nirvdrum has quit [Ping timeout: 258 seconds]
18:34
<
headius[m] >
no wonder
18:36
<
headius[m] >
looks like this has been around since 2010
18:36
<
headius[m] >
amazing
19:50
klobuczek[m] has joined #jruby
19:54
<
headius[m] >
Can you show me?
19:56
<
headius[m] >
Have you been able to narrow down what's slower?
19:56
<
headius[m] >
I really want closure on this before 9.2.11
19:57
<
headius[m] >
How did you launch that build?
19:57
<
klobuczek[m] >
sorry missed the top:
19:57
<
klobuczek[m] >
```heinrich@berlin:~/mck/jruby$ export JRUBY_HOME=/Users/heinrich/mck/jruby
19:57
<
klobuczek[m] >
heinrich@berlin:~/mck/jruby$ ./mvnw clean```
19:58
<
klobuczek[m] >
```heinrich@berlin:~/mck/jruby$ export JRUBY_HOME=/Users/heinrich/mck/jruby
19:58
<
klobuczek[m] >
heinrich@berlin:~/mck/jruby$ ./mvnw clean```
19:58
<
headius[m] >
Well I don't know why it failed but try unsetting env
19:59
<
klobuczek[m] >
the it works
19:59
<
klobuczek[m] >
but what about gems? do I have to run bundle after each build
19:59
<
klobuczek[m] >
* but what about gems? do I have to run bundle after each build?
20:00
ur5us_ has joined #jruby
20:01
<
klobuczek[m] >
I would like to get to a point where I can run rspec from a different directory than the jruby build
20:06
<
klobuczek[m] >
all open source
20:07
<
klobuczek[m] >
but the setup is not trivial
20:11
<
klobuczek[m] >
but it is much simpler than our commercial and confidential project. It exhibits 4 times slower tests on 9.2.10.0
20:11
<
headius[m] >
Oh you use neo eh?
20:11
<
headius[m] >
Do not need to rebundle
20:12
<
headius[m] >
Just rebuild
20:19
ur5us__ has joined #jruby
20:22
ur5us_ has quit [Ping timeout: 240 seconds]
20:31
ur5us__ has quit [Remote host closed the connection]
20:48
<
headius[m] >
ok, so it's probably not in there
20:48
<
headius[m] >
does your test suite spin up a lot of subprocesses?
20:49
<
klobuczek[m] >
no, not at all
20:50
<
headius[m] >
ok so probably not a launching issue
20:50
<
headius[m] >
did you see the basic instructions I posted for getting a profile?
20:51
<
headius[m] >
there's another option I think works out of the box on Java 11: -Xrunhprof:cpu=samples
20:51
<
headius[m] >
that's a JVM option
21:27
<
headius[m] >
I am confused
22:15
ur5us has joined #jruby
22:34
lucasb has quit [Quit: Connection closed for inactivity]
22:51
Antiarc_ has quit [Ping timeout: 265 seconds]
22:54
Antiarc has joined #jruby
22:58
mistergibson has joined #jruby
23:01
mistergibson has quit [Client Quit]
23:54
ur5us has quit [Ping timeout: 240 seconds]