The survreg in R fails to estimate effects of covariates? I would like to know whether the survreg in the newest R (3.3.2) has any bugs. 
The survreg in my environment (Windows 10 with R 3.3.2 downloaded today, Feb 19, 2017) might not correctly estimate the effect of a covariate:  
require(survival)
n <- 50 # the number of rats
POISON.EFFECT <- 0.08
intercept <- 0.0001
dose <- (1:n)/2 # dose of poison for each rat
risks <- exp(POISON.EFFECT*dose + intercept) # risk of each dose
surv.time <- rexp(n, rate = risks) # survival time for each risk

plot(surv.time ~ dose)  # suvival time decreases as dose increases

survreg(Surv(surv.time,rep(1,n)) ~ dose, dist="weibull", 
    control=list(maxiter=100))$coef[2]
    # estimate of POISON.EFFECT by weibull regression
    # -0.06 or so. NEGATIVE. Why??

coxph(Surv(surv.time,rep(1,n)) ~ dose)$coef
    # estimate of POISON.EFFECT by the Cox proportional hazard model
    # 0.07 or so. Not bad. 

 A: The opposite signs are just as expected.  In survival regression some transformation of survival time $T$, by default the log in survreg, is modelled as belonging to a location-scale family of distributions such that
$$
\ln T = \mu + \sigma W,
$$
and the location parameter $\mu$ in turn depends on covariates of interest, e.g.
$$ 
\mu = \beta_0 + \beta_1 x
$$ 
So under this model, a unit change in $x$ changes the expected lifetime by a factor of $\exp(\beta_1)$.
Under the Cox proportional hazards model, the hazard is modelled as
$$
\lambda(t) = \lambda_0(t) e^{\beta_0 + \beta_1 x}
$$
so a unit change in $x$ changes the hazard by a factor $\exp(\beta_1)$ and decreases $ET$ by some amount depending on the baseline hazard $\lambda_0(t)$ (for positive $\beta_1$).  If the baseline hazard follows the Weibull model (as in your simulation example), one can show that $ET$ changes exactly by a factor $\exp(-\beta_1)$.
A: Thank you so much, Jarle. 
I now understand that survival::survreg(dist = "weibull") uses the accelerated failure time model (AFT), NOT the proportional hazard model (PH). 
That is, 
Weibull distribution: f(t) = (h/c)(t/c)^(h-1)exp(-(t/c)^h)
    [h: shape parameter, c: scale parameter]
AFT: c = exp(a0 + a1*x1 + a2*x2 ...)
PH: (1/c)^h = exp(b0 + b1*x1 + b2*x2 ...)
    [xi: explanatory variable, i=1,2,...]
Therefore, 
exp(a0 + a1*x1 + a2*x2) = exp(-(b0 + b1*x1 + b2*x2)/h)
Therefore, 
a0 = -b0/h
a1 = -b1/h
a2 = -b2/h
....
