This is still not thread-safe, but github's hiding our discussion because it was on an outdated diff.  To fix this you need to make the threads not share mutable data or only share read-only data.  The easiest way I can think of to do this is to create a replicant on line 85 in the parent thread and then use that replicant in the child thread block of 87 to 88.  This will be inefficient since check_simple itself calls replicant internally, but modifying the datastore has to happen on a separate module instance for each thread:

```ruby
instance = mod.replicant
instance.datastore['RHOST'] = ip.dup

thread = framework.threads.spawn("CheckHost-#{ip}", false) {
  instance.check_simple
}
@tl << thread
```

I moved setting the datastore outside the thread since it doesn't take that long and doesn't really need to be threaded.